Autonomous agents ยท by xAI

Grok Bot

Use Social Studio with Grok Bot

If your bot runs on the Grok API, give it the tools as functions (it is OpenAI-compatible) or point an MCP-capable host at the MCP URL.

Function callingDeveloper2 ways to connect~10 min setup

Grok Bot

Asks for ideas and drafts

Social tools

MCP or HTTP, one API key

You approve

Review link, then Publish

Threads

Your feeds

TikTok, Reels, Threads, Bluesky

Your agent calls the Creative Tim Social tools, which prepare a draft. You approve it, and it is published to TikTok, Instagram Reels, Threads or Bluesky.

The one rule

An agent prepares and a person publishes. Grok Bot can create drafts, but it cannot publish to TikTok, and it cannot approve anything on your behalf. You open the review link, check the post and click Publish.

What Grok Bot can do

  • Check the rules

    Limits and approval rules for a network, before you make the video

    social_get_requirements
  • Generate ideas

    Video ideas with hook, script, video prompt, caption and hashtags

    social_generate_ideas
  • Import a video

    Host a video from a link in your own storage

    social_import_video
  • Upload a file

    Upload a video file directly

    social_get_upload_url
  • Create a draft

    Create a post draft. TikTok drafts come with a review link for you

    social_create_draft
  • List your posts

    Your posts and their status

    social_list_posts
  • Track status

    One post: processing, published (with link) or failed (with the reason)

    social_get_post_status

Set it up

  1. 1

    Create a Creative Tim API key

    Create one here. It starts with sk-ct-. Keep it in your client's secret settings, never in a prompt.

  2. 2

    Connect at least one social account

    Link TikTok, Instagram, Threads or Bluesky in the Social Studio.

    Threads
  3. 3

    Connect Grok Bot

    Pick one. Function calling is the recommended way for Grok Bot.

    Give Grok Bot the tools as functions

    Recommended
    TypeScript
    // The model API is OpenAI-compatible; the tools are plain HTTP.
    import OpenAI from "openai"
    
    const llm = new OpenAI({ baseURL: "https://api.x.ai/v1", apiKey: process.env.XAI_API_KEY })
    const spec = await (await fetch("https://www.creative-tim.com/ui/api/social/openapi.json")).json()
    
    // Each OpenAPI operation becomes one function the model can call.
    const tools = Object.entries(spec.paths).map(([path, op]: [string, any]) => ({
      type: "function" as const,
      function: {
        name: op.post.operationId,
        description: op.post.description,
        parameters: op.post.requestBody.content["application/json"].schema,
      },
    }))
    
    const messages: any[] = [{ role: "user", content: "Make 3 TikTok ideas about home coffee, then draft the first one." }]
    for (;;) {
      const res = await llm.chat.completions.create({ model: "YOUR_GROK_MODEL", messages, tools })
      const msg = res.choices[0].message
      messages.push(msg)
      if (!msg.tool_calls?.length) break
      for (const call of msg.tool_calls) {
        const out = await fetch(`https://www.creative-tim.com/ui/api/social/tools/${call.function.name}`, {
          method: "POST",
          headers: { Authorization: `Bearer ${process.env.CREATIVE_TIM_API_KEY}`, "Content-Type": "application/json" },
          body: call.function.arguments,
        })
        messages.push({ role: "tool", tool_call_id: call.id, content: await out.text() })
      }
    }
    console.log(messages.at(-1).content)
    • Keep your Creative Tim key in CREATIVE_TIM_API_KEY, never in the prompt.
    • Return the whole assistant message (including its reasoning fields) to the model on the next turn, as the model's API requires.

    Connect any MCP client

    Option 2
    1. 1In your agent's MCP or tools settings, add a remote server with the URL above.
    2. 2Send your key as a Bearer token in the Authorization header.
    3. 3If the client only supports local (stdio) servers, bridge it with: npx -y mcp-remote https://www.creative-tim.com/ui/api/mcp --header "Authorization:Bearer sk-ct-YOUR_KEY"
    Settings
    URL:           https://www.creative-tim.com/ui/api/mcp
    Transport:     Streamable HTTP (stateless, JSON responses)
    Authorization: Bearer sk-ct-YOUR_KEY

Try it

Paste this into Grok Bot and fill in the blanks:

Prompt
Use the Creative Tim social tools. First check the requirements for TikTok. Then give me 5 video ideas for <my niche>. For the one I pick, import this video <video URL>, and create a TikTok draft with the caption. Give me the review link.
  1. Step 1

    Grok Bot tells you the draft is waiting and gives you a link.

  2. Step 2

    Open it, review the post, publish.

  3. Step 3

    Posts then show their status (processing, published with a link, or failed with TikTok's own reason) in the Social Studio.

Questions

Can Grok Bot publish to TikTok for me?

No. Grok Bot can create a draft with the video and caption and give you a review link. You open it, check the settings TikTok allows for your account, and click Publish. TikTok requires the creator to approve each post, so no agent can do it for you.

Which networks can Grok Bot prepare posts for?

TikTok, Instagram Reels, Threads and Bluesky. For networks other than TikTok, your own copilot or autopilot setting decides whether a draft waits for your approval or is scheduled directly.

What does it cost?

Posting and drafting are free. Generating ideas or video in Creative Tim uses credits from your plan.

Where does my API key go?

In the client's secret or header settings, never in a prompt. You can create and revoke keys on the API Keys page at any time.

Other agents

See all agents