ViewPrinter

Schedule social posts to TikTok, Instagram, Facebook, YouTube and X; manage accounts and media

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
84%
Naming quality
84%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~15,565Tokens (tool definitions)
~8.5 KBTypical response size
Significant attention impact (12.16% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "viewprinter": {
      "url": "https://viewprinter.tech/api/mcp"
    }
  }
}

Remote endpoints

https://viewprinter.tech/api/mcpstreamable-http

What it can do

Tool inventory

Tools (15)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢platforms_list(platforms)

What each platform accepts. Called with nothing, it lists every platform with the media kinds and counts it takes and its caption limit — enough to decide where a post can go. Name platforms to add their recommended sizes and durations, their options with what each one does, and the quirks that decide how a post is treated. Read this before scheduling rather than discovering the rules by being rejected.

Input Schema

{
  "type": "object",
  "properties": {
    "platforms": {
      "description": "Which platforms to describe in full. Omit for a short answer covering all of them. Naming only the platforms you are posting to keeps the reply small — full detail for all of them is several times the size.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "platforms": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "canConnect": {
            "type": "boolean"
          },
          "canPublish": {
            "type": "boolean"
          },
          "media": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "boolean"
                  },
                  "image": {
                    "type": "object",
                    "properties": {
                      "max": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "max"
                    ],
                    "additionalProperties": false
                  },
                  "video": {
                    "type": "object",
                    "properties": {
                      "max": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "max"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "text"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "caption": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "label": {
                    "type": "string"
                  },
                  "max": {
                    "type": "number"
                  },
                  "extras": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "label": {
                          "type": "string"
                        },
                        "max": {
                          "type": "number"
                        }
                      },
                      "required": [
                        "label",
                        "max"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "label",
                  "max"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "specs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "kind": {
                  "type": "string"
                },
                "width": {
                  "type": "number"
                },
                "height": {
                  "type": "number"
                },
                "ratio": {
                  "type": "string"
                },
                "maxSeconds": {
                  "type": "number"
                },
                "maxBytes": {
                  "type": "number"
                },
                "formats": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "note": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "label",
                "kind",
                "width",
                "height",
                "ratio"
              ],
              "additionalProperties": false
            }
          },
          "notes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "options": {}
        },
        "required": [
          "platform",
          "label",
          "canConnect",
          "canPublish",
          "media",
          "caption"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "platforms"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢accounts_list(metrics, period)

List every social account you can post to, across all your workspaces. Each account includes the workspace it belongs to and any groups it is in. Use the returned ids to name post destinations explicitly, or a group name to name several at once. metrics true adds how each account is performing — followers, posts, total likes and following, each with how far it moved over the period — and orders by followers, largest first. Numbers are as of the last sweep rather than live; every account carries the time it was measured, and one nobody has measured yet has no metrics at all rather than zeroes.

Input Schema

{
  "type": "object",
  "properties": {
    "metrics": {
      "description": "Include followers and how they moved. Defaults to false.",
      "type": "boolean"
    },
    "period": {
      "description": "With metrics: the window every change is measured over. Defaults to 24h. A change is the difference against the last observation before the window opened, so it is null when there was none.",
      "type": "string",
      "enum": [
        "24h",
        "7d"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "accounts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "platform": {
            "type": "string"
          },
          "handle": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "displayName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string"
          },
          "refreshTokenExpiresAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "organizationId": {
            "type": "string"
          },
          "avatarUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "profileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "scopeCoverage": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "granted": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "expected": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991
                  },
                  "held": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "missing": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "granted",
                  "expected",
                  "held",
                  "missing"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "metrics": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "capturedAt": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                  },
                  "comparedTo": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "followers": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "change": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "change"
                    ],
                    "additionalProperties": false
                  },
                  "posts": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "change": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "change"
                    ],
                    "additionalProperties": false
                  },
                  "likes": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "change": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "change"
                    ],
                    "additionalProperties": false
                  },
                  "following": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "change": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "change"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "capturedAt",
                  "comparedTo",
                  "followers",
                  "posts",
                  "likes",
                  "following"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "platform",
          "handle",
          "displayName",
          "status",
          "refreshTokenExpiresAt",
          "organizationId",
          "avatarUrl",
          "profileUrl",
          "scopeCoverage",
          "groups"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "accounts"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡accounts_connect(platform, invite)

Connect a social account. Opens the platform in the person's browser so they can sign in and approve access — that part cannot happen here, because it needs their session and their consent. Call it again after they finish and it reports the connected account. With `invite`, the link is for someone else instead — a friend or family member who will create a brand-new account and connect it, with no login of their own here. They get a page showing the profile to set up (picture, username, name, bio) with copy buttons, the steps to switch Instagram to a Creator account, and a Connect button. Give the person the `url`. Calling again with the same platform and username returns the same invite, updated with whatever profile fields are given, and its status — so that is also how to check whether they have finished. Upload the profile picture first with media_upload, and pass its id once the PUT succeeds.

Input Schema

{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string",
      "enum": [
        "tiktok",
        "instagram",
        "facebook",
        "youtube",
        "x"
      ],
      "description": "Which platform to connect."
    },
    "invite": {
      "description": "Set to make a link for someone without a login here, who will create the account. Leave out to connect an account yourself.",
      "type": "object",
      "properties": {
        "username": {
          "type": "string",
          "minLength": 1,
          "maxLength": 31,
          "description": "The handle they should register, without the @. Also what identifies this invite on a repeat call. Instagram allows letters, numbers, periods and underscores, up to 30."
        },
        "display_name": {
          "description": "The profile name shown above the bio.",
          "type": "string",
          "maxLength": 64
        },
        "bio": {
          "description": "The profile bio. Instagram caps it at 150 characters.",
          "type": "string",
          "maxLength": 150
        },
        "avatar_media_id": {
          "description": "An image uploaded with media_upload to use as the profile picture. The invite goes into the same workspace as the image.",
          "type": "string"
        }
      },
      "required": [
        "username"
      ]
    }
  },
  "required": [
    "platform"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "platform": {
      "type": "string"
    },
    "connected": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "platform": {
            "type": "string"
          },
          "handle": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "displayName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "status": {
            "type": "string"
          },
          "refreshTokenExpiresAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "organizationId": {
            "type": "string"
          },
          "avatarUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "profileUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "scopeCoverage": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "granted": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "expected": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991
                  },
                  "held": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "missing": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "granted",
                  "expected",
                  "held",
                  "missing"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "platform",
          "handle",
          "displayName",
          "status",
          "refreshTokenExpiresAt",
          "organizationId",
          "avatarUrl",
          "profileUrl",
          "scopeCoverage"
        ],
        "additionalProperties": false
      }
    },
    "url": {
      "type": "string"
    },
    "invite": {
      "type": "object",
      "properties": {
        "platform": {
          "type": "string"
        },
        "username": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "displayName": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "bio": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "lastError": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "avatarUrl": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "connectedHandle": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "connected": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
        }
      },
      "required": [
        "platform",
        "username",
        "displayName",
        "bio",
        "lastError",
        "avatarUrl",
        "connectedHandle",
        "connected",
        "id",
        "createdAt"
      ],
      "additionalProperties": false
    },
    "status": {
      "type": "string"
    }
  },
  "required": [
    "platform",
    "connected",
    "status"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢products_list

The products your accounts post for — an app, a book, a shop — each with the accounts linked to it and the workspace it is in. An account belongs to at most one product. Use products_save to create one or change which accounts belong to it.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "products": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "organizationId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "accounts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "platform": {
                  "type": "string"
                },
                "handle": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "displayName": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "type": "string"
                },
                "refreshTokenExpiresAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "organizationId": {
                  "type": "string"
                },
                "avatarUrl": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "profileUrl": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "scopeCoverage": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "granted": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "expected": {
                          "type": "integer",
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991
                        },
                        "held": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "missing": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "required": [
                        "granted",
                        "expected",
                        "held",
                        "missing"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "platform",
                "handle",
                "displayName",
                "status",
                "refreshTokenExpiresAt",
                "organizationId",
                "avatarUrl",
                "profileUrl",
                "scopeCoverage"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "id",
          "organizationId",
          "name",
          "description",
          "accounts"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "products"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡products_save(id, name, description, account_ids, workspace_id)

Create a product, or change one. Found by id when given, otherwise by name (ignoring case) and created when there is none, so saving the same product twice changes nothing the second time. account_ids is the complete list of accounts that post for it: accounts in another product move here, and accounts in this one that are not listed leave it. Leave it out to keep the accounts as they are. A product holds accounts from one workspace; when you are in several and name no accounts, pass workspace_id (from accounts_list).

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "description": "An existing product to change, from products_list.",
      "type": "string"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "The name, or the new name when id is given."
    },
    "description": {
      "description": "What it is, in a sentence or two.",
      "type": "string",
      "maxLength": 500
    },
    "account_ids": {
      "description": "Every account that posts for it, from accounts_list.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "workspace_id": {
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "product": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "organizationId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "accounts": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "platform": {
                "type": "string"
              },
              "handle": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "displayName": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "type": "string"
              },
              "refreshTokenExpiresAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "organizationId": {
                "type": "string"
              },
              "avatarUrl": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "profileUrl": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "scopeCoverage": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "granted": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "expected": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "held": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "missing": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "granted",
                      "expected",
                      "held",
                      "missing"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "id",
              "platform",
              "handle",
              "displayName",
              "status",
              "refreshTokenExpiresAt",
              "organizationId",
              "avatarUrl",
              "profileUrl",
              "scopeCoverage"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "id",
        "organizationId",
        "name",
        "description",
        "accounts"
      ],
      "additionalProperties": false
    },
    "created": {
      "type": "boolean"
    }
  },
  "required": [
    "product",
    "created"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🔴products_delete(id, confirm_discard)

Delete a product. Its accounts stay connected and belong to no product afterwards. Refused while it has campaigns. Its knowledge documents and gathered research are deleted with it, so this is refused while it has any unless confirm_discard is true — read the refusal, which says how many would go, before confirming.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The product, from products_list."
    },
    "confirm_discard": {
      "type": "boolean"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "deleted": {
      "type": "string"
    },
    "accountsUnlinked": {
      "type": "number"
    },
    "knowledgeDeleted": {
      "type": "number"
    },
    "researchDeleted": {
      "type": "number"
    }
  },
  "required": [
    "deleted",
    "accountsUnlinked",
    "knowledgeDeleted",
    "researchDeleted"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢groups_list

Your named sets of accounts. Each group lists its members with the state of each, and how many of them need reconnecting — a post naming a group is refused outright if any member cannot publish, so check here before composing one. Use a group name with posts_save instead of listing account ids.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "groups": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "members": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "platform": {
                  "type": "string"
                },
                "handle": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "displayName": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "type": "string"
                },
                "refreshTokenExpiresAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "organizationId": {
                  "type": "string"
                },
                "avatarUrl": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "profileUrl": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "scopeCoverage": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "granted": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 9007199254740991
                        },
                        "expected": {
                          "type": "integer",
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991
                        },
                        "held": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "missing": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "required": [
                        "granted",
                        "expected",
                        "held",
                        "missing"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "platform",
                "handle",
                "displayName",
                "status",
                "refreshTokenExpiresAt",
                "organizationId",
                "avatarUrl",
                "profileUrl",
                "scopeCoverage"
              ],
              "additionalProperties": false
            }
          },
          "needsReconnecting": {
            "type": "number"
          }
        },
        "required": [
          "id",
          "name",
          "description",
          "members",
          "needsReconnecting"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "groups"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡groups_save(name, new_name, description, account_ids)

Create a group or change one. A group is a name for a set of accounts, so posts_save can take the name instead of every id. Found by name without regard to case: an existing group is updated (new_name renames it), and a new name creates one, which needs account_ids. account_ids is always the full membership afterwards, not a list to add. All the accounts must be in one workspace.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The group, matched without regard to case. Created when there is none by this name."
    },
    "new_name": {
      "description": "Rename an existing group to this.",
      "type": "string"
    },
    "description": {
      "description": "What it is for, so it can be chosen without reading it.",
      "type": "string"
    },
    "account_ids": {
      "description": "The complete membership, from accounts_list — whatever is sent replaces what was there. Required to create a group; omit it to leave an existing group’s members alone.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "group": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "members": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "platform": {
                "type": "string"
              },
              "handle": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "displayName": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "type": "string"
              },
              "refreshTokenExpiresAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "organizationId": {
                "type": "string"
              },
              "avatarUrl": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "profileUrl": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "scopeCoverage": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "granted": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 9007199254740991
                      },
                      "expected": {
                        "type": "integer",
                        "exclusiveMinimum": 0,
                        "maximum": 9007199254740991
                      },
                      "held": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "missing": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    },
                    "required": [
                      "granted",
                      "expected",
                      "held",
                      "missing"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "id",
              "platform",
              "handle",
              "displayName",
              "status",
              "refreshTokenExpiresAt",
              "organizationId",
              "avatarUrl",
              "profileUrl",
              "scopeCoverage"
            ],
            "additionalProperties": false
          }
        },
        "needsReconnecting": {
          "type": "number"
        }
      },
      "required": [
        "id",
        "name",
        "description",
        "members",
        "needsReconnecting"
      ],
      "additionalProperties": false
    },
    "created": {
      "type": "boolean"
    }
  },
  "required": [
    "group",
    "created"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🔴groups_delete(name)

Remove a group. The accounts in it are not touched and stay connected — only the name and its membership go. Posts already scheduled through it are unaffected, because a post records the accounts rather than the group.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The group to remove, from groups_list."
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "deleted": {
      "type": "string"
    }
  },
  "required": [
    "deleted"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟡media_upload(kind, mime_type)

Reserve an id and get a short-lived URL to PUT the file to, with the same Content-Type as mime_type and no other headers. The bytes go straight to storage, not through this API, and the file is recorded on its own once the PUT succeeds: pass the id to posts_save, media_save or anything else that takes a media id straight away. It shows in media_list within a few minutes.

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "image",
        "video",
        "audio"
      ],
      "description": "What the file is."
    },
    "mime_type": {
      "type": "string",
      "description": "The exact Content-Type the PUT will send, e.g. video/mp4."
    }
  },
  "required": [
    "kind",
    "mime_type"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "expires_in_seconds": {
      "type": "number"
    }
  },
  "required": [
    "id",
    "url",
    "expires_in_seconds"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢media_list(media_id, kind, search, limit, cursor)

Files uploaded in your workspaces, newest first, 50 at a time. Use these ids when attaching media to a post. Narrow with kind or search (words in the description), or pass media_id for one file. When nextCursor is not null, pass it as cursor for the next page.

Input Schema

{
  "type": "object",
  "properties": {
    "media_id": {
      "description": "One file by id. Every other argument is ignored.",
      "type": "string"
    },
    "kind": {
      "description": "Only this kind of file.",
      "type": "string",
      "enum": [
        "image",
        "video",
        "audio"
      ]
    },
    "search": {
      "description": "Words in the description, ignoring case.",
      "type": "string"
    },
    "limit": {
      "description": "How many to return. Defaults to 50.",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "cursor": {
      "description": "nextCursor from the previous page, for the page after it.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "media": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "mimeType": {
            "type": "string"
          },
          "byteSize": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "width": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": -2147483648,
                "maximum": 2147483647
              },
              {
                "type": "null"
              }
            ]
          },
          "height": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": -2147483648,
                "maximum": 2147483647
              },
              {
                "type": "null"
              }
            ]
          },
          "durationMs": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": -2147483648,
                "maximum": 2147483647
              },
              {
                "type": "null"
              }
            ]
          },
          "organizationId": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          }
        },
        "required": [
          "id",
          "kind",
          "description",
          "mimeType",
          "byteSize",
          "width",
          "height",
          "durationMs",
          "organizationId",
          "createdAt"
        ],
        "additionalProperties": false
      }
    },
    "nextCursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "media",
    "nextCursor"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🔴media_save(id, description)

Say what a file shows, in your own words. On a base image this is who is on camera — "a woman in her early twenties, blonde hair in a loose bun" — and a campaign reads it so the same person appears in every render instead of changing between them. Send null to clear it. Nothing else about a file can be changed here; what it is was read from the file itself.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "description": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "The words, or null to remove the ones already there."
    }
  },
  "required": [
    "id",
    "description"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "media": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "mimeType": {
          "type": "string"
        },
        "byteSize": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "width": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ]
        },
        "height": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ]
        },
        "durationMs": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -2147483648,
              "maximum": 2147483647
            },
            {
              "type": "null"
            }
          ]
        },
        "organizationId": {
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
        }
      },
      "required": [
        "id",
        "kind",
        "description",
        "mimeType",
        "byteSize",
        "width",
        "height",
        "durationMs",
        "organizationId",
        "createdAt"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "media"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🔴media_delete(id)

Remove a file and its stored bytes. This cannot be undone, and any post still using it will lose it.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "deleted": {
      "type": "boolean"
    }
  },
  "required": [
    "deleted"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🔴posts_save(post_id, content, account_ids, groups, media_ids, ...)

Create, change or cancel a post. This publishes: a new post is queued for every account named and goes out at scheduled_at, or as soon as possible without one. Do not tell anyone their post is saved or scheduled until this has returned successfully. No post_id creates a post. Name accounts with ids from accounts_list, or a group from groups_list for all of its members — the two combine, and a group is expanded now, so adding an account to it later does not add it to this post. Accounts must all be in one workspace. Attach media by id from media_list; a post is either a video or a set of images, never both. draft true holds it here without sending anything. With post_id, changes a post that has not gone out: caption, time, destinations, or draft state. account_ids and groups then replace the destination list entirely. draft false sends a draft. Setting scheduled_at on a post whose destinations failed queues the failed ones again and leaves the published ones alone — fix what made them fail first, usually by reconnecting. The caption and destinations can only change while nothing has published; after that only the time can, and new words mean a new post. With post_id and cancel true, stops it: destinations that have not started are cancelled, and any already being published cannot be recalled and come back in still_going. Safe to repeat. Publishing has to be enabled on the account; where it is not, a new post saves nothing at all and a draft is left as it was, and the answer says so. Cancelling works whether or not publishing is enabled.

Input Schema

{
  "type": "object",
  "properties": {
    "post_id": {
      "description": "A post to change or cancel, from posts_list. Omit to create one.",
      "type": "string"
    },
    "content": {
      "description": "The caption.",
      "type": "string"
    },
    "account_ids": {
      "description": "Accounts to post to, from accounts_list. On a new post, optional when groups is given; naming neither is refused. On an existing post, replaces the destinations — send every account you want.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "groups": {
      "description": "Group names from groups_list, expanded to their members and combined with account_ids. Matched without regard to case.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "media_ids": {
      "description": "New posts only. Files to attach, in order — the slideshow order.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "scheduled_at": {
      "description": "ISO 8601. Omit to send as soon as possible. A time in the past sends as soon as possible.",
      "type": "string"
    },
    "platform_options": {
      "description": "New posts only. Per-platform settings, keyed by platform. Only the keys shown are accepted — an unknown key is refused rather than ignored. Call platforms_list for what each one does, its default, and which kind of post it applies to.",
      "type": "object",
      "properties": {
        "tiktok": {
          "type": "object",
          "properties": {
            "privacyLevel": {
              "type": "string",
              "enum": [
                "PUBLIC_TO_EVERYONE",
                "MUTUAL_FOLLOW_FRIENDS",
                "FOLLOWER_OF_CREATOR",
                "SELF_ONLY"
              ]
            },
            "disableComment": {
              "type": "boolean"
            },
            "disableDuet": {
              "type": "boolean"
            },
            "disableStitch": {
              "type": "boolean"
            },
            "videoCoverTimestampMs": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "autoAddMusic": {
              "type": "boolean"
            },
            "photoCoverIndex": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "title": {
              "type": "string",
              "maxLength": 90
            },
            "brandContentToggle": {
              "type": "boolean"
            },
            "brandOrganicToggle": {
              "type": "boolean"
            },
            "isAigc": {
              "type": "boolean"
            },
            "draft": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        "instagram": {
          "type": "object",
          "properties": {
            "story": {
              "type": "boolean"
            },
            "shareToFeed": {
              "type": "boolean"
            },
            "coverUrl": {
              "type": "string",
              "format": "uri"
            },
            "thumbOffset": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "isAiGenerated": {
              "type": "boolean"
            },
            "trialReel": {
              "type": "string",
              "enum": [
                "SS_PERFORMANCE",
                "MANUAL"
              ]
            }
          },
          "additionalProperties": false
        },
        "facebook": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        },
        "youtube": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string"
            },
            "privacy": {
              "type": "string",
              "enum": [
                "public",
                "unlisted",
                "private"
              ]
            },
            "categoryId": {
              "type": "string"
            },
            "tags": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "containsSyntheticMedia": {
              "type": "boolean"
            },
            "madeForKids": {
              "type": "boolean"
            }
          },
          "additionalProperties": false
        },
        "x": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        }
      }
    },
    "draft": {
      "description": "True holds the post here: nothing is queued and nothing reaches any platform. On an existing post, false sends a draft and true returns a scheduled post to draft. Unrelated to the per-platform draft option, which uploads to the platform for the creator to finish.",
      "type": "boolean"
    },
    "cancel": {
      "description": "With post_id: stop the post before it goes out.",
      "type": "boolean"
    },
    "idempotency_key": {
      "description": "New posts only. Reuse on retry to avoid posting twice; returns the original post.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "post": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "content": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "scheduledAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "source": {
          "type": "string"
        },
        "organizationId": {
          "type": "string"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "socialAccountId": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "externalUrl": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "publishedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "lastError": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "id",
              "socialAccountId",
              "status",
              "externalUrl",
              "publishedAt",
              "lastError"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "id",
        "status",
        "content",
        "scheduledAt",
        "source",
        "organizationId",
        "createdAt",
        "targets"
      ],
      "additionalProperties": false
    },
    "cancelled": {
      "description": "When cancelling: destinations stopped before they started.",
      "type": "number"
    },
    "still_going": {
      "description": "When cancelling: destinations already in flight, which cannot be stopped.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢posts_list(post_id, from, to, status, platform, ...)

Posts in your workspaces, newest first, one page at a time, each with the state of every destination it was sent to and the numbers it has earned so far. Call it to find one post (post_id), to check whether something published, and before changing or cancelling anything — posts_save takes a post_id from here. Numbers are as of the last sweep, and every destination carries the time it was measured — one nobody has measured yet has no metrics at all rather than zeroes. `trial` names an Instagram trial reel's graduation strategy, and is null for anything that is not one. A trial is shown to non-followers first, so its numbers come from a colder audience than an ordinary post's: compare trials with trials. Each row also carries `insights`: what the platform's own analytics said on that delivery, never summed across deliveries. reach (distinct accounts), totalWatchMs and avgWatchMs, replays, follows (gained from the post), completionRate and skipRate as fractions 0..1, `retention` — the full audience-retention curve as Facebook sends it, `points[i]` being the share still watching at i twentieths of the video and `bucketMs` one twentieth in milliseconds — and `breakdowns` such as clicks by type. retentionAt3s and retentionAtHalf are read off that curve, interpolated between buckets, so hooks can be ranked by how many viewers they held; null without a curve or a known video length. Null means the platform does not report it; a name listed in `unavailable` means it would have and refused this time. Compare watch time across platforms as totalWatchMs / views: Facebook averages per play and Instagram per viewer, so avgWatchMs is not comparable between them. Every filter is optional and they combine: a date range, statuses, platforms, accounts, groups and products by name, where the post came from, and a caption search. Pass nextCursor back as cursor for the next page; null means there is no more.

Input Schema

{
  "type": "object",
  "properties": {
    "post_id": {
      "description": "One post by id. The other filters are ignored.",
      "type": "string"
    },
    "from": {
      "description": "ISO date or date-time. Only posts that went out, or are due to, at or after this.",
      "type": "string"
    },
    "to": {
      "description": "ISO date or date-time. Only posts before this.",
      "type": "string"
    },
    "status": {
      "description": "published, scheduled, draft, failed or cancelled. A post matches when any of its destinations is in one of these states.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "published",
          "scheduled",
          "draft",
          "failed",
          "cancelled"
        ]
      }
    },
    "platform": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "tiktok",
          "instagram",
          "facebook",
          "x",
          "youtube",
          "linkedin"
        ]
      }
    },
    "account_id": {
      "description": "Accounts by id, from accounts_list.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "group": {
      "description": "Groups by name, from groups_list: posts to any of their accounts.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "product": {
      "description": "Products by name or id: posts to accounts linked to them.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "source": {
      "description": "Where a post came from. external is one made on the platform itself and found afterwards.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "web",
          "mcp",
          "api",
          "campaign",
          "external"
        ]
      }
    },
    "search": {
      "description": "Text the caption contains, ignoring case.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "sort_by": {
      "description": "A counter or insight (views, likes, …), \"when\", \"updated\" or \"account\". Defaults to newest first.",
      "type": "string",
      "enum": [
        "views",
        "likes",
        "comments",
        "shares",
        "saves",
        "reach",
        "totalWatchMs",
        "replays",
        "follows",
        "when",
        "updated",
        "account"
      ]
    },
    "order": {
      "description": "Defaults to desc.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "period": {
      "description": "The window each figure's change is measured over. Defaults to 24h.",
      "type": "string",
      "enum": [
        "24h",
        "7d"
      ]
    },
    "limit": {
      "description": "Posts per page. Defaults to 25.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "cursor": {
      "description": "nextCursor from the previous page.",
      "type": "string"
    },
    "rank_by": {
      "description": "Rank the matching posts by one figure of their best destination instead: any counter (views, likes, …) or insight (reach, avgWatchMs, completionRate, retentionAt3s, retentionAtHalf, …). Answers \"which hooks held viewers\" or \"what is moving now\". Ranks up to 500 matching posts; no cursor.",
      "type": "string",
      "enum": [
        "views",
        "likes",
        "comments",
        "shares",
        "saves",
        "reach",
        "totalWatchMs",
        "avgWatchMs",
        "replays",
        "follows",
        "completionRate",
        "retentionAt3s",
        "retentionAtHalf"
      ]
    },
    "by": {
      "description": "With rank_by: the running total, or how much it moved over the period. Defaults to the total. Insights rank by value only.",
      "type": "string",
      "enum": [
        "value",
        "change"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Output Schema

{
  "type": "object",
  "properties": {
    "posts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "post": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "content": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "scheduledAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "source": {
                "type": "string"
              },
              "organizationId": {
                "type": "string"
              },
              "createdAt": {
                "type": "string",
                "format": "date-time",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
              }
            },
            "required": [
              "id",
              "status",
              "content",
              "scheduledAt",
              "source",
              "organizationId",
              "createdAt"
            ],
            "additionalProperties": false
          },
          "thumbnail": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "kind": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "kind"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "targets": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "socialAccountId": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "externalUrl": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "publishedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "lastError": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "post": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "content": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "scheduledAt": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "source": {
                      "type": "string"
                    },
                    "organizationId": {
                      "type": "string"
                    },
                    "createdAt": {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                    }
                  },
                  "required": [
                    "id",
                    "status",
                    "content",
                    "scheduledAt",
                    "source",
                    "organizationId",
                    "createdAt"
                  ],
                  "additionalProperties": false
                },
                "account": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "platform": {
                      "type": "string"
                    },
                    "handle": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "displayName": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "status": {
                      "type": "string"
                    },
                    "refreshTokenExpiresAt": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "organizationId": {
                      "type": "string"
                    },
                    "avatarUrl": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "profileUrl": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "scopeCoverage": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "granted": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 9007199254740991
                            },
                            "expected": {
                              "type": "integer",
                              "exclusiveMinimum": 0,
                              "maximum": 9007199254740991
                            },
                            "held": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            "missing": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          },
                          "required": [
                            "granted",
                            "expected",
                            "held",
                            "missing"
                          ],
                          "additionalProperties": false
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "id",
                    "platform",
                    "handle",
                    "displayName",
                    "status",
                    "refreshTokenExpiresAt",
                    "organizationId",
                    "avatarUrl",
                    "profileUrl",
                    "scopeCoverage"
                  ],
                  "additionalProperties": false
                },
                "trial": {
                  "anyOf": [
                    {
                      "type": "string",
                      "enum": [
                        "SS_PERFORMANCE",
                        "MANUAL"
                      ]
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "metrics": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "capturedAt": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                        },
                        "comparedTo": {
                          "anyOf": [
                            {
                              "type": "string",
                              "format": "date-time",
                              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "views": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "change": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "value",
                            "change"
                          ],
                          "additionalProperties": false
                        },
                        "likes": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "change": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "value",
                            "change"
                          ],
                          "additionalProperties": false
                        },
                        "comments": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "change": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "value",
                            "change"
                          ],
                          "additionalProperties": false
                        },
                        "shares": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "change": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "value",
                            "change"
                          ],
                          "additionalProperties": false
                        },
                        "saves": {
                          "type": "object",
                          "properties": {
                            "value": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "change": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            }
                          },
                          "required": [
                            "value",
                            "change"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "capturedAt",
                        "comparedTo",
                        "views",
                        "likes",
                        "comments",
                        "shares",
                        "saves"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "insights": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "reach": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "totalWatchMs": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "avgWatchMs": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": -2147483648,
                              "maximum": 2147483647
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "replays": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "follows": {
                          "anyOf": [
                            {
                              "type": "integer",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "completionRate": {
                          "anyOf": [
                            {
                              "type": "number",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "skipRate": {
                          "anyOf": [
                            {
                              "type": "number",
                              "minimum": -9007199254740991,
                              "maximum": 9007199254740991
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "retention": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "points": {
                                  "type": "array",
                                  "items": {
                                    "type": "number"
                                  }
                                },
                                "bucketMs": {
                                  "anyOf": [
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "null"
                                    }
                                  ]
                                }
                              },
                              "required": [
                                "points",
                                "bucketMs"
                              ],
                              "additionalProperties": false
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "breakdowns": {
                          "anyOf": [
                            {
                              "type": "object",
                              "propertyNames": {
                                "type": "string"
                              },
                              "additionalProperties": {
                                "type": "object",
                                "propertyNames": {
                                  "type": "string"
                                },
                                "additionalProperties": {
                                  "type": "number"
                                }
                              }
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "unavailable": {
                          "anyOf": [
                            {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "retentionAt3s": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "retentionAtHalf": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "required": [
                        "reach",
                        "totalWatchMs",
                        "avgWatchMs",
                        "replays",
                        "follows",
                        "completionRate",
                        "skipRate",
                        "retention",
                        "breakdowns",
                        "unavailable",
                        "retentionAt3s",
                        "retentionAtHalf"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "thumbnail": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "kind": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "kind"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "finalizedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "postedAt": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time",
                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "socialAccountId",
                "status",
                "externalUrl",
                "publishedAt",
                "lastError",
                "post",
                "account",
                "trial",
                "metrics",
                "insights",
                "thumbnail",
                "finalizedAt",
                "postedAt"
              ],
              "additionalProperties": false
            }
          },
          "totals": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "capturedAt": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                  },
                  "comparedTo": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "date-time",
                        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "views": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "change": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "change"
                    ],
                    "additionalProperties": false
                  },
                  "likes": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "change": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "change"
                    ],
                    "additionalProperties": false
                  },
                  "comments": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "change": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "change"
                    ],
                    "additionalProperties": false
                  },
                  "shares": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "change": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "change"
                    ],
                    "additionalProperties": false
                  },
                  "saves": {
                    "type": "object",
                    "properties": {
                      "value": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "change": {
                        "anyOf": [
                          {
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ]
                      }
                    },
                    "required": [
                      "value",
                      "change"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "capturedAt",
                  "comparedTo",
                  "views",
                  "likes",
                  "comments",
                  "shares",
                  "saves"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "sums": {
            "type": "object",
            "propertyNames": {
              "type": "string",
              "enum": [
                "reach",
                "totalWatchMs",
                "replays",
                "follows"
              ]
            },
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ]
            },
            "required": [
              "reach",
              "totalWatchMs",
              "replays",
              "follows"
            ]
          },
          "happenedAt": {
            "type": "string",
            "format": "date-time",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
          }
        },
        "required": [
          "post",
          "thumbnail",
          "targets",
          "totals",
          "sums",
          "happenedAt"
        ],
        "additionalProperties": false
      }
    },
    "nextCursor": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "posts",
    "nextCursor"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

Recommended Prompts

list_items
List all [items] available in ViewPrinter
Expected tools: platforms_list
browse_collection
Show me the [collection] from ViewPrinter
Expected tools: platforms_list

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded15 tools
verifiedversion not recorded18 tools