Skip to content

X

OpenQuok MCP examples for X — tweets, media, and multi-part threads.

3 min read

Connect your agent today

Draft from chat, review in your calendar, and publish only what you approve.

Start for $0

Channel quick reference

PropertyValue
Provider identifierx
Max content length280 weighted (4000 when Verified)
Required attachmentsNone — text-only posts publish
OAuth setupX setup guide

Schedule a post to X

Schedule a post to X for tomorrow at 10am UTC: Excited to announce our new feature!

The agent calls integrationList, optionally integrationSchema with platform: x, then schedulePostTool:

{
  "type": "schedule",
  "date": "2026-06-27T10:00:00.000Z",
  "socialPost": [
    {
      "integration": "<x-integration-id>",
      "postsAndComments": ["Excited to announce our new feature!"],
      "settings": { "who_can_reply_post": "everyone" }
    }
  ]
}

Post with an image URL

Schedule a tweet with this image https://example.com/launch.jpg and text “Launch day.”

{
  "type": "schedule",
  "date": "2026-06-27T10:00:00.000Z",
  "socialPost": [
    {
      "integration": "<x-integration-id>",
      "postsAndComments": ["Launch day."],
      "attachments": ["https://example.com/launch.jpg"],
      "settings": { "who_can_reply_post": "everyone" }
    }
  ]
}

Create a thread

Draft a three-part X thread: hook, two lessons learned, and a call to action.

Add multiple items to postsAndComments — the first string is the root tweet; the rest become replies:

{
  "type": "schedule",
  "date": "2026-06-27T10:00:00.000Z",
  "socialPost": [
    {
      "integration": "<x-integration-id>",
      "postsAndComments": [
        "Thread: 5 things I learned this week",
        "1. Consistency beats intensity",
        "2. Start before you're ready"
      ],
      "settings": { "who_can_reply_post": "everyone" }
    }
  ]
}

Cross-account repost

Schedule a tweet from my brand X account tomorrow at 10am with body “Main tweet from our brand account” — then have my other X account repost it two minutes after publish. Use integrationList to find both channel IDs.

Cross-account reposts belong in settings on the publishing channel — not as extra postsAndComments strings. List acting channel UUIDs in integrationIds inside x.crossAccountPlugs:

{
  "type": "schedule",
  "date": "2026-06-27T10:00:00.000Z",
  "socialPost": [
    {
      "integration": "<x-publish-integration-id>",
      "postsAndComments": ["Main tweet from our brand account"],
      "settings": {
        "x": {
          "crossAccountPlugs": [
            {
              "plugName": "x-repost-post-users",
              "enabled": true,
              "delayMs": 120000,
              "integrationIds": ["<x-other-integration-id>"],
              "fields": {}
            }
          ]
        }
      }
    }
  ]
}

Global plug when likes hit a threshold

On my X channel, create a global plug that replies “Appreciate the support!” when a tweet 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.

  1. Call integrationList and pick the X channel UUID.
  2. Call plugsCatalog and read field names for autoPlugPost or autoRepostPost on x.
  3. Call plugsUpsert.

Auto-reply when likes hit 100

{
  "integrationId": "<x-integration-id>",
  "func": "autoPlugPost",
  "fields": [
    { "name": "likesAmount", "value": "100" },
    { "name": "post", "value": "Appreciate the support — link in bio!" }
  ]
}

Auto-repost when likes hit 100

{
  "integrationId": "<x-integration-id>",
  "func": "autoRepostPost",
  "fields": [
    { "name": "likesAmount", "value": "100" }
  ]
}

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.

Search documentation
Find a docs page
Discord Support