Meta Threads
OpenQuok MCP examples for Meta Threads — scheduled posts, reply chains, cross-account comments, and provider tools.
Connect your agent today
Draft from chat, review in your calendar, and publish only what you approve.
Channel quick reference
| Property | Value |
|---|---|
| Provider identifier | threads |
| Max content length | 500 characters |
| Required attachments | None — text-only posts publish |
| OAuth setup | Meta Threads |
Schedule a single post
Schedule a post to my Threads account tomorrow at 2pm UTC saying “Hello from my AI assistant” — use integrationList first to find the right channel ID.
The agent should:
- Call integrationList and pick the Threads channel.
- Optionally call integrationSchema with platform: threads to check character limits.
- Call schedulePostTool with type: schedule and an ISO date.
{
"type": "schedule",
"date": "2026-06-27T14:00:00.000Z",
"socialPost": [
{
"integration": "<threads-integration-id>",
"postsAndComments": ["Hello from my AI assistant"]
}
]
} Reply chain (thread)
Draft a three-part Threads thread on my connected account: hook, detail, and call to action.
{
"type": "draft",
"socialPost": [
{
"integration": "<threads-integration-id>",
"postsAndComments": [
"Here is the hook.",
"Here is the supporting detail.",
"What do you think? Reply below."
]
}
]
} The adapter maps additional postsAndComments entries to Threads reply chains automatically.
Cross-account comment from another Threads channel
Schedule a Threads post from my brand account tomorrow at 10am with body “Main thread from our brand account” — then have my other Threads account comment “Great thread — sharing from our other account.” two minutes after publish. Use integrationList to find both channel IDs.
Cross-account comments belong in settings on the publishing channel — not as extra postsAndComments strings. List acting channel UUIDs in integrationIds inside threads.crossAccountPlugs:
{
"type": "schedule",
"date": "2026-06-27T10:00:00.000Z",
"socialPost": [
{
"integration": "<threads-publish-integration-id>",
"postsAndComments": ["Main thread from our brand account"],
"settings": {
"threads": {
"crossAccountPlugs": [
{
"plugName": "threads-cross-account-comment",
"enabled": true,
"delayMs": 120000,
"integrationIds": ["<threads-other-integration-id>"],
"fields": {
"comment": "Great thread — sharing from our other account."
}
}
]
}
}
}
]
} Same account vs cross-account
postsAndComments entries after the first string are same-account reply chains. threads.internalEngagementPlug in settings runs a delayed reply from the publishing channel. threads.crossAccountPlugs runs comments from other connected Threads channels. delayMs is in milliseconds (120000 = two minutes).
Mentions scope
Cross-account Threads comments require the threads_manage_mentions OAuth scope on acting channels. Reconnect integrations after adding the scope in your Meta app. See CLI examples — Threads for Meta App Review notes.
Trigger a provider tool
On my Threads integration, run the allow-listed tool to refresh channel metadata.
- Call integrationSchema with platform: threads and read the tools array.
- Call triggerTool:
{
"integration": "<threads-integration-id>",
"methodName": "<method-from-schema>",
"data": {}
} Global plug (likes threshold)
On my Threads channel, create a global plug that replies “Thanks for reading!” when a post gets 100 likes — use integrationList first.
Global plugs are channel-level rules that fire when a published post’s likes reach a threshold. OpenQuok checks every six hours, up to three times per post.
- Call integrationList and pick the Threads channel UUID.
- Call plugsCatalog and read the autoPlugPost field names for threads.
- Call plugsUpsert:
{
"integrationId": "<threads-integration-id>",
"func": "autoPlugPost",
"fields": [
{ "name": "likesAmount", "value": "100" },
{ "name": "post", "value": "Thanks for reading — like and follow for more!" }
]
} Pause or delete a global rule
Disable the global plug with id abc123 on my workspace.
{
"plugId": "<plug-id>",
"activated": false
} Call plugsActivate with activated: true to re-enable. Call plugsDelete to remove the row permanently.
Internal vs global
schedulePostTool.settings handles per-post plugs at create time (threads.crossAccountPlugs, threads.internalEngagementPlug). plugsUpsert handles channel-level rules that watch likes on future publishes. See CLI examples — Threads for internal plug field shapes.