---
title: "AG2"
description: "Conecta sistemas multiagente AG2 a TwexAPI para búsqueda de tweets, perfiles, líneas de tiempo y flujos de investigación delegados."
---

[AG2](https://github.com/ag2ai/ag2) es un framework Python de código abierto para sistemas multiagente. TwexAPI aún no incluye un toolkit de búsqueda nativo para AG2. Conecta agentes AG2 al [servidor MCP de TwexAPI](/mcp/overview) con `MCPToolkit` para que los agentes puedan llamar a `explore` y `twexapi_request` manteniendo las credenciales de API dentro de tu infraestructura.

Conserva cada ID de tweet, ID de usuario y cursor que devuelva la API.

## ¿Por qué usar AG2 con TwexAPI?

AG2 te da control explícito sobre exposición de herramientas, delegación y middleware. Combínalo con TwexAPI MCP cuando quieras investigación multiagente sin codificar cada ruta REST.

| Límite | Control de AG2 | Beneficio |
| ----------------- | ------------------------- | ---------------------------------------------------------------------- |
| Construcción de herramientas | `MCPToolkit(...)` | Restringe a `explore` y `twexapi_request`, o filtra más |
| Entrada del modelo | Esquemas de herramientas MCP | El modelo elige rutas solo desde endpoints descubiertos |
| Alcance en runtime | `Variable` | Resuelve headers por usuario o tenant en tiempo de ejecución |
| Delegación | `Agent.as_tool()` | Mantiene el historial de llamadas a herramientas del buscador fuera del contexto del coordinador |
| Transporte | `MCPServerConfig` | Apunta a `https://api.twexapi.io/mcp` con `x-api-key` |

Esto encaja con agentes de investigación, monitoreo e informes. Usa el [Python SDK](/sdks/python) o la [colección Prefect](/guides/prefect) para trabajos deterministas que no requieren decisiones del modelo.

## Requisitos previos

* Python 3.10 o posterior
* Una [API key de TwexAPI](https://twexapi.io/dashboard)
* Una API key de proveedor LLM compatible con AG2

Las lecturas públicas de X no requieren credenciales de X Developer. Autentícate con TwexAPI.

## Instalar AG2

```bash
python -m pip install "ag2>=1.0.0" python-dotenv
```

Instala también el extra de tu proveedor de modelo.

```bash
python -m pip install "ag2[anthropic]>=1.0.0"
```

Guarda los secretos fuera del control de versiones.

```bash
export TWEXAPI_API_KEY="YOUR_API_KEY"
export ANTHROPIC_API_KEY="YOUR_ANTHROPIC_KEY"
```

## Conectar TwexAPI MCP con MCPToolkit

Usa `MCPToolkit` del lado del cliente cuando las credenciales deben permanecer en tu infraestructura. TwexAPI MCP expone `explore` y `twexapi_request`.

```python
import asyncio
import os

from ag2 import Agent
from ag2.config import AnthropicConfig
from ag2.tools import MCPToolkit, MCPServerConfig
from dotenv import load_dotenv

load_dotenv()
config = AnthropicConfig(model="claude-sonnet-4-20250514")

twexapi_mcp = MCPToolkit(
    MCPServerConfig(
        server_url="https://api.twexapi.io/mcp",
        server_label="twexapi",
        headers={"x-api-key": os.environ["TWEXAPI_API_KEY"]},
        allowed_tools=["explore", "twexapi_request"],
    )
)

agent = Agent(
    "x-researcher",
    prompt=(
        "Search X for evidence before answering. "
        "Always call explore before twexapi_request. "
        "Quote tweet text verbatim and keep every tweet ID you receive. "
        "Ask for confirmation before read_only: false actions."
    ),
    config=config,
    tools=[twexapi_mcp],
)


async def main() -> None:
    reply = await agent.ask(
        "What are developers saying about AI agents on X this week? "
        "Return tweet IDs, authors, and a 5-bullet summary."
    )
    print(reply.body)


asyncio.run(main())
```

`headers` con `x-api-key` es obligatorio. Las solicitudes no autenticadas a `https://api.twexapi.io/mcp` devuelven `401`.

## Restringir herramientas por rol de agente

Dale a los agentes de solo descubrimiento acceso a `explore`. Dale a los agentes de ejecución ambas herramientas.

```python
catalog_agent_tools = [
    MCPToolkit(
        MCPServerConfig(
            server_url="https://api.twexapi.io/mcp",
            headers={"x-api-key": os.environ["TWEXAPI_API_KEY"]},
            allowed_tools=["explore"],
            server_label="twexapi-catalog",
        )
    )
]

execution_agent_tools = [
    MCPToolkit(
        MCPServerConfig(
            server_url="https://api.twexapi.io/mcp",
            headers={"x-api-key": os.environ["TWEXAPI_API_KEY"]},
            allowed_tools=["explore", "twexapi_request"],
            server_label="twexapi-execute",
        )
    )
]
```

## Delegar búsqueda en un equipo multiagente

`Agent.as_tool()` expone un agente como herramienta para otro agente. El coordinador recibe la respuesta final del delegado, no su historial interno de llamadas a herramientas.

```python
searcher = Agent(
    "searcher",
    prompt=(
        "Use TwexAPI MCP to search public X posts. "
        "Call explore first. Return tweet text with IDs. Do not summarise away IDs."
    ),
    config=config,
    tools=[twexapi_mcp],
)

analyst = Agent(
    "analyst",
    prompt="Turn tweet records into a factual brief. Keep every tweet ID.",
    config=config,
)

coordinator = Agent(
    "coordinator",
    prompt="Delegate the search, then pass the tweets to the analyst.",
    config=config,
    tools=[
        searcher.as_tool(description="Search public X posts and return raw tweet records."),
        analyst.as_tool(description="Analyse tweet records. Pass them in the context parameter."),
    ],
)

reply = await coordinator.ask("Brief me on this week's discussion of AI agents on X.")
print(reply.body)
```

## Lista de verificación de entrega

Almacena campos durables de las respuestas MCP para que los pasos posteriores del flujo de trabajo no dependan del historial de chat.

| Tipo de dato | Almacenar |
| --- | --- |
| Tweets | `tweet_id`, `text`, `author_username`, `created_at`, `has_more`, `next_cursor`, consulta original |
| Perfiles | `user_id`, `username`, `name`, `description`, `followers_count`, búsqueda de origen |
| Tendencias | país, tema, etiqueta de contenido, filas de tweets, filtros solicitados |
| Escrituras | `tweet_id`, nombre de ruta, estado, registro de confirmación |

Consulta [Agent MCP Handoff](/mcp/agent-handoff) para la lista de verificación completa.

## Paginación

Cuando `explore` devuelve una ruta paginada, pasa los campos de cursor documentados de vuelta a través de `twexapi_request` sin cambios. Trata los cursores como cadenas opacas. Elimina duplicados por `tweet_id` o `user_id`.

```python
checkpoint = {
    "route_used": "/twitter/advanced_search/page",
    "query": "AI agents",
    "has_more": True,
    "next_cursor": "cursor_123",
}
```

## Combinar con Docs MCP

Añade el [servidor Docs MCP](/mcp/docs-mcp) cuando los agentes deban buscar documentación de TwexAPI antes de elegir rutas.

```python
tools=[
    MCPToolkit(
        MCPServerConfig(
            server_url="https://docs.twexapi.io/mcp",
            server_label="twexapi-docs",
        )
    ),
    twexapi_mcp,
]
```

## Manejar fallos

Los errores MCP y REST aparecen a través del toolkit como fallos HTTP. Ramifica por estado antes de reintentar.

| Estado | Acción |
| ------ | ------ |
| `400` | Corrige la solicitud. No reintentes sin cambios. |
| `401` | Verifica el header `x-api-key` o el token Bearer. |
| `403` | Verifica acceso a la cuenta, créditos y permisos de escritura. |
| `429` | Espera y conserva el cursor. |
| `5xx` | Reintenta con backoff acotado. |

Envuelve `MCPToolkit` con middleware de herramientas AG2 cuando necesites reintentos, puertas de aprobación o registro de auditoría alrededor de cada llamada.

## MCP del lado del proveedor (solo Anthropic)

Si apuntas a Anthropic y aceptas reenviar credenciales al proveedor, usa `MCPServerTool` en lugar de `MCPToolkit`. Prefiere `MCPToolkit` para despliegues agnósticos al proveedor y cuando las API keys deben permanecer en tu infraestructura.

## Guías relacionadas

* [Documentación de servidores MCP de AG2](https://docs.ag2.ai/docs/user-guide/tools/mcp_servers/)
* [MCP Server](/mcp/overview)
* [MCP Tools](/mcp/tools)
* [LangChain](/guides/langchain)
* [CrewAI](/guides/crewai)
* [Python SDK](/sdks/python)
