La recherche se charge uniquement lorsque vous l’utilisez. Parcourez toutes les catégories ci-dessous.

Outil MCP

Lire ses publications Threads

sosoapi_query_threads_provider_posts

Lire une page officielle bornée de publications Threads pour la connexion choisie. Les réponses personnelles sont exclues et la couverture reste incomplète.

Lire en Markdown

Profils et transports

Profils : full · Transports : stdio, http

Choisissez core ou full pour définir les outils visibles du client ; cela ne change pas ses autorisations. Le téléversement local nécessite stdio et n’est pas disponible sur HTTP. Définissez SOSOAPI_OUTPUT_SCHEMAS=1 pour inclure les schémas de sortie à la découverte. Les outils renvoient des résultats structurés avec ou sans ce réglage.

Autorisations et effets de bord

Les annotations aident les clients à décrire un outil. Chaque appel vérifie toujours l’authentification, le rôle, l’accès aux ressources et les capacités accordées de l’utilisateur.

{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}

Champs d’entrée

Requis signifie requis dans l’objet parent et la branche sélectionnée. Un enfant requis ne rend pas obligatoire un parent facultatif. Les règles et noms de champs ci-dessous proviennent du contrat.

Champs d’entrée
Champ / brancheType / requisContraintes
$objectRequis dans le parent
  • additionalProperties: false
workspace_idstringRequis dans le parent
  • format: "uuid"
social_account_idstringRequis dans le parent
  • format: "uuid"
sinceintegerFacultatif / élément
  • minimum: 1688540400
  • maximum: 9007199254740991
untilintegerFacultatif / élément
  • minimum: 1688540400
  • maximum: 9007199254740991
limitintegerFacultatif / élément
  • minimum: 1
  • maximum: 100
afterstringFacultatif / élément
  • minLength: 1
  • maxLength: 4096
JSON Schema complet
{
  "type": "object",
  "properties": {
    "workspace_id": {
      "type": "string",
      "format": "uuid"
    },
    "social_account_id": {
      "type": "string",
      "format": "uuid"
    },
    "since": {
      "$ref": "#/$defs/s0"
    },
    "until": {
      "$ref": "#/$defs/s0"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "after": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096
    }
  },
  "required": [
    "workspace_id",
    "social_account_id"
  ],
  "additionalProperties": false,
  "$defs": {
    "s0": {
      "type": "integer",
      "minimum": 1688540400,
      "maximum": 9007199254740991
    }
  }
}

Sortie structurée

Ce schéma décrit structuredContent dans un résultat d’outil réussi. La réponse MCP contient aussi content et peut définir isError en cas d’échec. Pour publier, lisez le résultat final de la publication plutôt que de considérer une requête acceptée ou une réponse texte comme une confirmation. L’opération API liée explique les autorisations et règles de nouvelle tentative.

Requis signifie requis dans l’objet parent et la branche sélectionnée. Un enfant requis ne rend pas obligatoire un parent facultatif. Les règles et noms de champs ci-dessous proviennent du contrat.

Sortie structurée
Champ / brancheType / requisContraintes
$objectRequis dans le parent
  • additionalProperties: false
contract_versionstringRequis dans le parent
  • const: "threads-reads/v1"
operationstringRequis dans le parent
  • const: "provider_posts"
sourcestringRequis dans le parent
  • const: "official_threads_api"
workspace_idstringRequis dans le parent
  • format: "uuid"
social_account_idstringRequis dans le parent
  • format: "uuid"
provider_account_idstringRequis dans le parent
  • pattern: "^\\d{2,20}$"
provider_app_identitystring | nullRequis dans le parent—
provider_app_identityanyOf 1stringRequis dans le parent
  • minLength: 1
  • maxLength: 100
provider_app_identityanyOf 2nullRequis dans le parent—
oauth_snapshot_idstring | nullRequis dans le parent—
oauth_snapshot_idanyOf 1stringRequis dans le parent
  • format: "uuid"
oauth_snapshot_idanyOf 2nullRequis dans le parent—
fetched_atstringRequis dans le parent
  • 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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
statusstringRequis dans le parent
  • enum: ["available","partial","unavailable"]
unavailable_reasonstring | nullRequis dans le parent—
unavailable_reasonanyOf 1stringRequis dans le parent
  • enum: ["grant_inventory_unknown","missing_permissions","issuing_app_unknown","credential_unavailable","credential_expired","account_unhealthy","provider_denied","provider_rate_limited","provider_unavailable","provider_response_invalid"]
unavailable_reasonanyOf 2nullRequis dans le parent—
accessobjectRequis dans le parent
  • additionalProperties: false
access.required_permissionsarrayRequis dans le parent
  • maxItems: 4
access.required_permissions[]stringFacultatif / élément
  • pattern: "^[a-z][a-z0-9_]{0,99}$"
access.missing_permissionsarrayRequis dans le parent
  • maxItems: 4
access.missing_permissions[]stringFacultatif / élément
  • pattern: "^[a-z][a-z0-9_]{0,99}$"
access.permission_statestringRequis dans le parent
  • enum: ["granted","missing","unknown"]
access.grant_evidencestringRequis dans le parent
  • enum: ["exact","unknown"]
access.app_accessstringRequis dans le parent
  • const: "unverified"
dataarrayRequis dans le parent
  • maxItems: 100
data[]objectFacultatif / élément
  • additionalProperties: false
data[].idstringRequis dans le parent
  • pattern: "^\\d{2,20}$"
data[].textstring | nullRequis dans le parent—
data[].textanyOf 1stringRequis dans le parent
  • maxLength: 30000
data[].textanyOf 2nullRequis dans le parent—
data[].usernamestring | nullRequis dans le parent—
data[].usernameanyOf 1stringRequis dans le parent
  • pattern: "^[A-Za-z0-9._]{1,30}$"
data[].usernameanyOf 2nullRequis dans le parent—
data[].permalinkstring | nullRequis dans le parent—
data[].permalinkanyOf 1stringRequis dans le parent
  • format: "uri"
data[].permalinkanyOf 2nullRequis dans le parent—
data[].timestampstring | nullRequis dans le parent—
data[].timestampanyOf 1stringRequis dans le parent
  • 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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
data[].timestampanyOf 2nullRequis dans le parent—
data[].media_typestring | nullRequis dans le parent—
data[].media_typeanyOf 1stringRequis dans le parent
  • enum: ["TEXT","TEXT_POST","IMAGE","VIDEO","CAROUSEL_ALBUM","AUDIO","REPOST_FACADE"]
data[].media_typeanyOf 2nullRequis dans le parent—
data[].is_replyboolean | nullRequis dans le parent—
data[].is_quote_postboolean | nullRequis dans le parent—
data[].has_repliesboolean | nullRequis dans le parent—
data[].root_post_idstring | nullFacultatif / élément—
data[].root_post_idanyOf 1stringFacultatif / élément
  • pattern: "^\\d{2,20}$"
data[].root_post_idanyOf 2nullFacultatif / élément—
data[].replied_to_idstring | nullFacultatif / élément—
data[].replied_to_idanyOf 1stringFacultatif / élément
  • pattern: "^\\d{2,20}$"
data[].replied_to_idanyOf 2nullFacultatif / élément—
profileobject | nullRequis dans le parent—
profileanyOf 1objectRequis dans le parent
  • additionalProperties: false
profile.usernameanyOf 1stringRequis dans le parent
  • pattern: "^[A-Za-z0-9._]{1,30}$"
profile.nameanyOf 1string | nullRequis dans le parent—
profile.nameanyOf 1 / anyOf 1stringRequis dans le parent
  • maxLength: 200
profile.nameanyOf 1 / anyOf 2nullRequis dans le parent—
profile.biographyanyOf 1string | nullRequis dans le parent—
profile.biographyanyOf 1 / anyOf 1stringRequis dans le parent
  • maxLength: 2000
profile.biographyanyOf 1 / anyOf 2nullRequis dans le parent—
profile.is_verifiedanyOf 1boolean | nullRequis dans le parent—
profile.follower_countanyOf 1integer | nullRequis dans le parent—
profile.follower_countanyOf 1 / anyOf 1integerRequis dans le parent
  • minimum: 0
  • maximum: 9007199254740991
profile.follower_countanyOf 1 / anyOf 2nullRequis dans le parent—
profileanyOf 2nullRequis dans le parent—
locationsarrayFacultatif / élément
  • maxItems: 100
locations[]objectFacultatif / élément
  • additionalProperties: false
locations[].idstringRequis dans le parent
  • pattern: "^\\d{2,20}$"
locations[].namestring | nullRequis dans le parent—
locations[].nameanyOf 1stringRequis dans le parent
  • maxLength: 200
locations[].nameanyOf 2nullRequis dans le parent—
locations[].addressstring | nullRequis dans le parent—
locations[].addressanyOf 1stringRequis dans le parent
  • maxLength: 500
locations[].addressanyOf 2nullRequis dans le parent—
locations[].citystring | nullRequis dans le parent—
locations[].cityanyOf 1stringRequis dans le parent
  • maxLength: 200
locations[].cityanyOf 2nullRequis dans le parent—
locations[].countrystring | nullRequis dans le parent—
locations[].countryanyOf 1stringRequis dans le parent
  • maxLength: 200
locations[].countryanyOf 2nullRequis dans le parent—
locations[].postal_codestring | nullRequis dans le parent—
locations[].postal_codeanyOf 1stringRequis dans le parent
  • maxLength: 100
locations[].postal_codeanyOf 2nullRequis dans le parent—
root_post_idstringFacultatif / élément
  • pattern: "^\\d{2,20}$"
target_usernamestringFacultatif / élément
  • pattern: "^[A-Za-z0-9._]{1,30}$"
coverageobjectRequis dans le parent
  • additionalProperties: false
coverage.completebooleanRequis dans le parent
  • const: false
coverage.next_cursorstring | nullRequis dans le parent—
coverage.next_cursoranyOf 1stringRequis dans le parent
  • minLength: 1
  • maxLength: 4096
coverage.next_cursoranyOf 2nullRequis dans le parent—
coverage.omitted_rowsintegerRequis dans le parent
  • minimum: 0
  • maximum: 9007199254740991
coverage.reasonsarrayRequis dans le parent
  • maxItems: 8
coverage.reasons[]stringFacultatif / élément
  • maxLength: 400
quotaarrayRequis dans le parent
  • maxItems: 1
quota[]objectFacultatif / élément
  • additionalProperties: false
quota[].providerstringRequis dans le parent
  • const: "meta"
quota[].usageobjectRequis dans le parent
  • additionalProperties: false
quota[].usage.call_countnumberFacultatif / élément—
quota[].usage.total_cputimenumberFacultatif / élément—
quota[].usage.total_timenumberFacultatif / élément—
quota[].usage.estimated_time_to_regain_accessnumberFacultatif / élément—
quota[].sourcesarrayRequis dans le parent
  • maxItems: 2
quota[].sources[]stringFacultatif / élément
  • enum: ["x-app-usage","x-business-use-case-usage"]
JSON Schema complet
{
  "type": "object",
  "properties": {
    "contract_version": {
      "type": "string",
      "const": "threads-reads/v1"
    },
    "operation": {
      "type": "string",
      "const": "provider_posts"
    },
    "source": {
      "type": "string",
      "const": "official_threads_api"
    },
    "workspace_id": {
      "type": "string",
      "format": "uuid"
    },
    "social_account_id": {
      "type": "string",
      "format": "uuid"
    },
    "provider_account_id": {
      "type": "string",
      "pattern": "^\\d{2,20}$"
    },
    "provider_app_identity": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ]
    },
    "oauth_snapshot_id": {
      "anyOf": [
        {
          "type": "string",
          "format": "uuid"
        },
        {
          "type": "null"
        }
      ]
    },
    "fetched_at": {
      "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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    },
    "status": {
      "type": "string",
      "enum": [
        "available",
        "partial",
        "unavailable"
      ]
    },
    "unavailable_reason": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "grant_inventory_unknown",
            "missing_permissions",
            "issuing_app_unknown",
            "credential_unavailable",
            "credential_expired",
            "account_unhealthy",
            "provider_denied",
            "provider_rate_limited",
            "provider_unavailable",
            "provider_response_invalid"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "access": {
      "type": "object",
      "properties": {
        "required_permissions": {
          "maxItems": 4,
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]{0,99}$"
          }
        },
        "missing_permissions": {
          "maxItems": 4,
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]{0,99}$"
          }
        },
        "permission_state": {
          "type": "string",
          "enum": [
            "granted",
            "missing",
            "unknown"
          ]
        },
        "grant_evidence": {
          "type": "string",
          "enum": [
            "exact",
            "unknown"
          ]
        },
        "app_access": {
          "type": "string",
          "const": "unverified"
        }
      },
      "required": [
        "required_permissions",
        "missing_permissions",
        "permission_state",
        "grant_evidence",
        "app_access"
      ],
      "additionalProperties": false
    },
    "data": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^\\d{2,20}$"
          },
          "text": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 30000
              },
              {
                "type": "null"
              }
            ]
          },
          "username": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[A-Za-z0-9._]{1,30}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "permalink": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "timestamp": {
            "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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
              },
              {
                "type": "null"
              }
            ]
          },
          "media_type": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "TEXT",
                  "TEXT_POST",
                  "IMAGE",
                  "VIDEO",
                  "CAROUSEL_ALBUM",
                  "AUDIO",
                  "REPOST_FACADE"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "is_reply": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "is_quote_post": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "has_replies": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "root_post_id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{2,20}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "replied_to_id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^\\d{2,20}$"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "text",
          "username",
          "permalink",
          "timestamp",
          "media_type",
          "is_reply",
          "is_quote_post",
          "has_replies"
        ],
        "additionalProperties": false
      }
    },
    "profile": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "username": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._]{1,30}$"
            },
            "name": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 200
                },
                {
                  "type": "null"
                }
              ]
            },
            "biography": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 2000
                },
                {
                  "type": "null"
                }
              ]
            },
            "is_verified": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "follower_count": {
              "anyOf": [
                {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9007199254740991
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "username",
            "name",
            "biography",
            "is_verified",
            "follower_count"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "locations": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^\\d{2,20}$"
          },
          "name": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "address": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          },
          "city": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "country": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 200
              },
              {
                "type": "null"
              }
            ]
          },
          "postal_code": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "address",
          "city",
          "country",
          "postal_code"
        ],
        "additionalProperties": false
      }
    },
    "root_post_id": {
      "type": "string",
      "pattern": "^\\d{2,20}$"
    },
    "target_username": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._]{1,30}$"
    },
    "coverage": {
      "type": "object",
      "properties": {
        "complete": {
          "type": "boolean",
          "const": false
        },
        "next_cursor": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 4096
            },
            {
              "type": "null"
            }
          ]
        },
        "omitted_rows": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "reasons": {
          "maxItems": 8,
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 400
          }
        }
      },
      "required": [
        "complete",
        "next_cursor",
        "omitted_rows",
        "reasons"
      ],
      "additionalProperties": false
    },
    "quota": {
      "maxItems": 1,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "const": "meta"
          },
          "usage": {
            "type": "object",
            "properties": {
              "call_count": {
                "type": "number"
              },
              "total_cputime": {
                "type": "number"
              },
              "total_time": {
                "type": "number"
              },
              "estimated_time_to_regain_access": {
                "type": "number"
              }
            },
            "additionalProperties": false
          },
          "sources": {
            "maxItems": 2,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "x-app-usage",
                "x-business-use-case-usage"
              ]
            }
          }
        },
        "required": [
          "provider",
          "usage",
          "sources"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "contract_version",
    "operation",
    "source",
    "workspace_id",
    "social_account_id",
    "provider_account_id",
    "provider_app_identity",
    "oauth_snapshot_id",
    "fetched_at",
    "status",
    "unavailable_reason",
    "access",
    "data",
    "profile",
    "coverage",
    "quota"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Exemple d’appel d’outil

Ces exemples utilisent des valeurs fictives vérifiées contre les schémas. Remplacez les identifiants par ceux que vous êtes autorisé à utiliser, les médias par des ressources prêtes et les dates par l’heure confirmée. Vérifiez l’éligibilité du compte avant toute écriture. Cette page n’envoie aucune requête API.

{
  "name": "sosoapi_query_threads_provider_posts",
  "arguments": {
    "workspace_id": "11111111-1111-4111-8111-111111111111",
    "social_account_id": "22222222-2222-4222-8222-222222222222",
    "limit": 25
  }
}

structuredContent

{
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "social_account_id": "22222222-2222-4222-8222-222222222222",
  "contract_version": "threads-reads/v1",
  "operation": "provider_posts",
  "source": "official_threads_api",
  "provider_account_id": "12345",
  "provider_app_identity": null,
  "oauth_snapshot_id": null,
  "fetched_at": "2099-01-15T09:00:00Z",
  "status": "unavailable",
  "unavailable_reason": "issuing_app_unknown",
  "access": {
    "required_permissions": [
      "threads_basic"
    ],
    "missing_permissions": [],
    "permission_state": "unknown",
    "grant_evidence": "unknown",
    "app_access": "unverified"
  },
  "data": [],
  "profile": null,
  "quota": [],
  "coverage": {
    "complete": false,
    "next_cursor": null,
    "omitted_rows": 0,
    "reasons": [
      "Fictional documentation example: no provider request was made and no account data was read.",
      "App access and any pending permission review remain unverified; this is not successful provider or public-access evidence."
    ]
  }
}
Installer ou connecter MCP