Build a Microsoft Agent Framework agent that can search tweets, hand off IDs and cursors, post tweets, replay stored monitor events, and run extraction jobs - all through Xquik’s MCP server.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.
Prerequisites
- Python 3.10+
- Xquik API key (
xq_...) - An LLM API key (OpenAI, Azure OpenAI, or any supported provider)
Install
agent-framework meta-package installs all core and provider sub-packages. The mcp package enables MCPStreamableHTTPTool support.
Full Example
explore + xquik) and can call any of the 120 API endpoints. The MCP runtime returns normalized snake_case fields through xquik.request(), so keep prompts aligned with tweet_id, has_more, next_cursor, and returned job IDs.
Handoff Checklist
Tweet search rows
Store
tweet_id, text, author_username, created_at, has_more, next_cursor, and the original q.User profile rows
Store source
id as user_id, plus username, name, followers, verified, profile_picture, has_more, next_cursor, and the source lookup or search query.Trend rows
Store each trend
name, rank, query, and description. Keep response count, woeid, and the requested region with the run checkpoint.Monitor and webhook setup
Store the returned monitor
id as monitor_id, event_types, next_billing_at, the returned webhook id as webhook_id, url, and the one-time secret in a secret manager. On production deliveries, 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
Store
event_id, type, monitor_id, monitor_type, occurred_at, has_more, next_cursor, and the after query for the next page.Extraction jobs
Store
extraction_id, status, poll, and export_after_complete; poll before loading CSV, JSON, or XLSX rows.Writes
Store
tweet_id or write_action_id, reply_to_tweet_id, status, charged_credits, and poll; do not resend pending writes.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.Streaming Responses
Userun_stream for real-time token streaming:
Multi-Agent Orchestration
UseGroupChatBuilder to coordinate specialized agents sharing the same MCP tools:
Per-Run Headers
Pass API keys dynamically viatool_resources for multi-tenant apps where each user has their own Xquik API key:
tool_resources are available only for the current run and are not persisted.
Azure OpenAI
SwapOpenAIChatClient for AzureOpenAIChatClient to use Azure-hosted models:
Environment Variables
Store your API keys in a.env file instead of hardcoding them:
.env
Package Versions
| Package | Version |
|---|---|
agent-framework | 1.0.0+ |
agent-framework-core | 1.0.0+ |
mcp | 1.9.2+ |