Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.xquik.com/llms.txt

Use this file to discover all available pages before exploring further.

Composio’s MCP endpoint (mcp.composio.dev) was decommissioned in March 2026, and managed Twitter credentials were removed in February 2026. This guide shows how to replace Composio’s Twitter MCP integration with Xquik.

Why Migrate

ComposioXquik
Accounts needed3 (X Developer, Composio, AI tool)1
Credentials6 (API Key, API Secret, Bearer Token, OAuth Client ID, OAuth Client Secret, Composio API Key)1 (API key)
Setup steps143
OAuth danceYes (browser redirect on first use)No
X Developer PortalRequired (create app, configure callbacks)Not required
Dashboard configRequired (create auth config, toggle custom creds)Not required
Setup code~20 lines + CLI commands0 lines (just config)
Twitter tools79120 documented operations + 23 extraction tools

Before: Composio Setup (14 Steps)

1

Create X Developer account

Go to developer.x.com, create a developer account, wait for approval.
2

Create X app

Navigate to Apps, create a new app, fill out the application form.
3

Copy X credentials

Copy Bearer Token, API Key, and API Secret.
4

Configure OAuth callback

Set OAuth 2.0 callback URL to https://backend.composio.dev/api/v1/auth-apps/add.
5

Copy OAuth credentials

Copy OAuth 2.0 Client ID and Client Secret.
6

Get Composio API key

Sign up at Composio, get an API key from the dashboard.
7

Create .env file

Add COMPOSIO_API_KEY and USER_ID to .env.
8

Install Composio SDK

pip install composio-core python-dotenv
9

Configure custom auth in Composio dashboard

Navigate to dashboard, create auth config for Twitter, toggle custom credentials, enter all 5 X credentials.
10

Write MCP URL generation script

Write ~20 lines of Python to create a Composio session and extract the MCP URL.
11

Run the script

python generate_mcp_url.py
12

Register MCP server

Run the CLI command from the script output.
13

Restart your AI tool

Exit and relaunch Claude Code, Cursor, etc.
14

Complete OAuth flow

On first tool use, click the browser link and authorize.

After: Xquik Setup (3 Steps)

1

Get an API key

Sign up at xquik.com, subscribe, and generate an API key from the dashboard.
2

Add MCP config

Add this to your MCP configuration:
claude mcp add xquik \
  --transport http \
  "https://xquik.com/mcp" \
  --header "x-api-key: xq_YOUR_KEY_HERE"
3

Use it

Start using X tools immediately. No OAuth flow, no browser redirect.

Code Migration

Python (Pydantic AI)

import os
from composio import Composio
from dotenv import load_dotenv

load_dotenv()

composio_client = Composio(api_key=os.getenv("COMPOSIO_API_KEY"))
composio_session = composio_client.create(
    user_id=os.getenv("USER_ID"),
    toolkits=["twitter"],
)

COMPOSIO_MCP_URL = composio_session.mcp.url

# Then configure your agent with COMPOSIO_MCP_URL...
# First use triggers OAuth browser flow

TypeScript (Mastra)

import { Composio } from "@composio/core";

const composio = new Composio({ apiKey: process.env.COMPOSIO_API_KEY });
const session = await composio.create({
  userId: process.env.USER_ID,
  toolkits: ["twitter"],
});

const mcpUrl = session.mcp.url;
// Then configure MCP client with mcpUrl...
// First use triggers OAuth browser flow

Result Handoff

When you replace Composio agent steps, map raw tool responses into stable rows before sending them to Slack, Sheets, queues, databases, or dashboards.

Tweet Search Page

Store request q, each tweet_id, text, author_username, created_at, and url. Keep has_more and next_cursor for page loops.

User Page

Store source id as user_id, plus username, name, followers, verified, and profile_picture. Keep has_more and next_cursor when present.

Trend Page

Store each trend name, rank, query, and description. Keep response count and woeid for regional audit trails.

Monitor Webhook

Store delivery_id for receiver retry de-dupe and stream_event_id when one monitor event should process once across endpoint changes.

Stored Event Replay

Use GET /api/v1/events with after to replay stored monitor events. Store event_id, type, monitor_id, monitor_type, occurred_at, has_more, and next_cursor.

Media Attachments

For tweets or replies, pass public URLs in media and store tweet_id or write_action_id. For DMs, upload first, pass one media_id in media_ids, store message_id, and leave reply_to_message_id unset.
For downstream tables, keep tweet_rows, user_rows, trend_rows, webhook_event_rows, event_replay_rows, and media_write_rows as separate shapes instead of passing the whole MCP result through the workflow.

Framework-Specific Guides

For complete integration guides with your framework:
Last modified on May 22, 2026