Skip to main content
Use this Microsoft Agent Framework tutorial to build a production-ready Twitter MCP agent. This Microsoft Agent Framework Python example connects to Xquik’s remote MCP server. Search tweets, inspect profiles, export followers, and replay monitors. Review X actions before execution. Preserve every tweet ID, profile ID, cursor, and job identifier exactly. Connect the Microsoft Agent Framework MCP server client through Streamable HTTP.

Why use the Microsoft AI agent framework with a Twitter API?

The Microsoft open-source agent framework provides agents, sessions, tools, middleware, and workflows. It supports Python and .NET. Use this Microsoft AI agent framework when Microsoft chat clients fit your stack. These building blocks support single-agent tasks and multi-agent systems. Xquik publishes Twitter API operations through two MCP tools: explore and xquik. Use each boundary for one responsibility. Choose it for Python services requiring model-selected tool calls. Choose direct REST for fixed jobs without model choices.

Microsoft Agent Framework getting started

  • Python 3.10 or later
  • An Xquik API key beginning with xq_
  • An LLM provider key supported by Microsoft Agent Framework
  • Connect an X account for private reads or X write actions
Public X reads do not require X Developer credentials. Authenticate with Xquik. Connect an X account only when the route requires it. Keep provider keys and Xquik keys in separate environment variables. Version 1.13.0 protects initialization requests and later tool invocations. Pin it when building AI agents with tenant credentials. Choose only AI models supported by the configured chat client.

Install Microsoft Agent Framework MCP support

Install the tested Python release.
Store secrets outside source control.
.env
.gitignore
Define the handoff before creating the agent. This production-ready example uses Model Context Protocol (MCP) tool calls. The framework parses the final response into the Pydantic model. Use a guest paid_reads key for this autonomous example. Never give an unattended research agent a write-capable key.
allowed_tools names the available remote tools. The agent receives only explore and xquik from Xquik’s MCP server. The agent framework import loads Agent and MCPStreamableHTTPTool. Agent framework agents use only the selected Xquik MCP tools. response_format asks the model for the Pydantic shape. Read the validated object from result.value. Never persist result.text as a typed handoff. The MCP runtime returns normalized snake_case fields through xquik.request(). It normalizes createdAt to the Unix-second field created. Keep the Pydantic model aligned with that contract.

Search tweets with focused queries

Send a precise q to the tweet search route. Keep it in the handoff. Use queryType=Latest for chronological monitoring. Use Top for engagement-ranked research. See the tweet search API contract. Pass next_cursor back unchanged. Never rebuild a cursor. Stop when has_more becomes false. Also stop when a cursor repeats. Continue through an empty page when has_more remains true. Deduplicate resumed results by tweet_id.

Add human-in-the-loop approval for Twitter actions

Xquik exposes one xquik execution tool. It runs routes authorized by the API key. Tool-name checks cannot distinguish routes inside xquik. Apply approval to xquik whenever a key authorizes writes. Ask a human in the loop to inspect every write-capable request.
Show the route, method, arguments, text, and selected X account. Reject any request whose method, arguments, text, or account changed. For public research, a guest paid_reads key supplies a hard read-only boundary. It exposes only eligible GET routes. Review guest wallet permissions before granting autonomous access.

Scope Microsoft Agent Framework tools for discovery

Expose only explore when an agent should inspect endpoint schemas.
This configuration cannot execute Twitter API operations. Adding xquik enables every operation authorized by the key. Use explore before an unfamiliar operation. It returns routes, parameters, and response fields. Discovery never executes an X operation.

Authenticate the Microsoft Agent Framework MCP client

Resolve one Xquik key for every run. Pass it through runtime context.
The secret_store represents your existing secret manager. Never include the returned key in prompts, sessions, handoffs, or logs. Microsoft Agent Framework 1.13.0 applies runtime headers during initialization and tool calls. It limits those headers to matching-origin requests. Create an isolated httpx.AsyncClient for each authenticated origin.

Build Microsoft multi-agent framework workflows

Teams evaluating a Microsoft multi-agent framework should isolate every agent’s tools. Give only the researcher access to Twitter MCP. Pass its validated handoff to a tool-free reviewer.
The reviewer receives no MCP tools. These multi-agent workflows prevent unauthorized Twitter API execution. The reviewer cannot fetch unrelated tweets or post X actions.

Handle tweet search errors and rate limits

The tweet search contract documents these responses. Handle each status independently. Do not restart pagination after 429. Preserve next_cursor and completed tweet IDs. Deduplicate by tweet_id after recovery. POST and DELETE routes document different statuses. Derive retry behavior from each route’s documented statuses. See error handling.

Preserve Microsoft Agent Framework workflows and handoffs

Tweet search rows

Store tweet_id, text, author_username, created, url, has_more, next_cursor, and the original q.

Profile and follower rows

Store source id as user_id, plus username, name, followers, verified, profile_picture, has_more, next_cursor, and the source lookup.

Monitor and webhook state

Store monitor_id, event_types, next_billing_at, webhook_id, and url. Keep the one-time webhook secret in a secret manager.

Stored event replay

Store event_id, type, monitor_id, occurred_at, has_more, next_cursor, and the requested cursor value.

Follower export jobs

Store extraction_id, status, poll, and export_after_complete. Poll before loading CSV, JSON, or XLSX rows.

Tweets and replies

Store tweet_id or write_action_id, reply_to_tweet_id, status, charged_credits, and poll. Never resend a pending write.

Choose MCP or the direct REST API

Use MCP for real-time research across related Twitter API operations. Use REST for fixed routes, scheduled exports, or latency-sensitive services.

Migrate older Microsoft Agent Framework code

Use current 1.13 APIs. Several preview-era examples use removed names. Microsoft Agent Framework unifies lessons from Semantic Kernel and AutoGen. Current releases also scope runtime MCP headers to matching origins. Keep the framework updated for those authentication fixes.

Verified Python package versions

We checked these versions on August 3, 2026. Pin a tested release. Review Microsoft Agent Framework release notes before widening the range.

Microsoft Agent Framework Twitter API questions

Does Microsoft Agent Framework support MCP?

Yes. Python agents connect through MCPStreamableHTTPTool. Xquik publishes explore and xquik at https://xquik.com/mcp.

Is Microsoft Agent Framework an alternative to MCP?

No. Microsoft Agent Framework runs agents and workflows. MCP standardizes remote tool access. This guide uses both layers together.

How do I connect Microsoft Agent Framework to a Twitter API?

Create MCPStreamableHTTPTool with the Xquik MCP URL. Resolve the x-api-key header through header_provider. Pass the tool to Agent.tools.

How does Microsoft Agent Framework MCP authentication work?

Xquik reads the x-api-key header. Resolve it through header_provider for each run. Pass its value through function_invocation_kwargs.

Does the Xquik MCP server require OAuth?

No. Xquik uses an API key. Do not add OAuth for this MCP server. Other MCP servers can require OAuth.

Where is the Microsoft Agent Framework documentation?

Microsoft Learn documents agents, MCP tools, sessions, approvals, and workflows. This guide applies those APIs to Xquik’s Twitter operations.

What does the Microsoft Agent Framework SDK provide?

The SDK provides agents, chat clients, sessions, middleware, tools, and typed workflows. Xquik supplies remote Twitter operations through MCP.

How do I search tweets with a Python agent?

Ask the agent to call GET /api/v1/x/tweets/search. Supply an exact q, queryType, and limit. Preserve tweet_id, created, and next_cursor.

Can Microsoft Agent Framework post tweets and replies?

Yes. Connect an X account first. Apply approval to every xquik request. Validate the selected account, text, reply ID, and media. See create tweet for the exact contract.

How do I handle Twitter API rate limits in Python?

Treat 429 separately from dependency errors. Save the cursor and completed tweet IDs. Resume after reset guidance. Never retry in a tight loop.

Can a Microsoft agent export Twitter followers?

Yes. Use the followers API for paginated profile rows. Use an extraction job for larger CSV, JSON, or XLSX exports.

Can the agent monitor tweets without repeated searches?

Yes. Create an account or keyword monitor. Replay stored events by cursor. Verify signatures and de-duplicate deliveries before connecting a webhook.

Can the agent triage customer support mentions?

Yes. Search brand mentions or create an account monitor. Preserve tweet IDs before classifying urgency. Keep every reply behind human approval.

Does tool filtering make the Twitter API read-only?

Only when allowed_tools contains explore without xquik. The xquik tool can run every operation authorized by its API key.

Why does my MCP agent lose authentication between calls?

Pass runtime values through function_invocation_kwargs on every resumed run. Keep one AgentSession during approvals. Never store the key in session state.