Saltar al contenido
Twexapi
Español
Esc
navegarabrir⌘Jvista previa
En esta página

Mastra

Crea agentes Mastra en TypeScript para búsqueda de tweets, perfiles, tendencias y escrituras en X revisadas a través de TwexAPI MCP.

Crea un agente de Twitter API con Mastra a través del servidor MCP de TwexAPI. Busca tweets, inspecciona perfiles, lee tendencias y revisa acciones de escritura. Conserva IDs de tweet, cursores y nombres de ruta como JSON tipado en lugar de resúmenes solo de chat.

¿Por qué usar Mastra con TwexAPI?

Mastra es un framework de agentes en TypeScript. TwexAPI proporciona descubrimiento de endpoints y llamadas autenticadas a través de explore y twexapi_request.

Tarea del agente Ruta de TwexAPI Conservar para el siguiente paso
Buscar tweets POST /twitter/advanced_search/page Consulta, IDs de tweet, autores, created_at, cursor
Inspeccionar un perfil GET /twitter/{screen_name}/about ID de usuario, nombre de usuario, biografía, cantidad de seguidores
Leer tendencias GET /twitter/global-trending/tweets País, tema, filas de tweets
Publicar o responder POST /twitter/tweets/create ID de tweet, ruta, aprobación humana, confirmación de cookie

Usa Mastra para apps TypeScript que ya usan modelos de Vercel AI SDK. Usa el TypeScript SDK o el CLI para trabajos programados que no requieren modelo.

Requisitos previos

  • Node.js 20 o posterior
  • Una API key de TwexAPI
  • Una API key de proveedor de modelo compatible con Mastra
  • Una cookie de Twitter o auth_token para acciones de escritura — consulta

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

Instalación

npm install @mastra/core @mastra/mcp @ai-sdk/openai dotenv
TWEXAPI_API_KEY=YOUR_API_KEY
OPENAI_API_KEY=sk-...

Conectar TwexAPI MCP

import "dotenv/config";
import { MCPClient } from "@mastra/mcp";

export const twexapiMcp = new MCPClient({
  servers: {
    twexapi: {
      url: new URL("https://api.twexapi.io/mcp"),
      requestInit: {
        headers: {
          "x-api-key": process.env.TWEXAPI_API_KEY!,
        },
      },
    },
  },
});

El servidor expone explore para descubrimiento y twexapi_request para llamadas autenticadas. Las solicitudes MCP no autenticadas devuelven 401.

Ejemplo completo

import { openai } from "@ai-sdk/openai";
import { Agent } from "@mastra/core/agent";
import { writeFile } from "node:fs/promises";
import { twexapiMcp } from "./mcp";

type TweetRow = {
  tweet_id: string;
  text: string;
  author_username?: string;
  created_at?: string;
};

type TweetSearchHandoff = {
  query: string;
  route_used: string;
  tweets: TweetRow[];
  has_more: boolean;
  next_cursor: string | null;
  stop_reason: "complete" | "requested_limit" | "cursor_stalled" | "page_cap";
};

const tools = await twexapiMcp.listTools();

export const twexapiAgent = new Agent({
  name: "twexapi-agent",
  instructions: `
    Use TwexAPI MCP for Twitter API requests.
    Call explore before twexapi_request.
    Preserve exact IDs and cursors. Never invent missing tweet fields.
    Ask for confirmation before read_only: false actions.
    Return only valid JSON matching the handoff contract.
  `,
  model: openai("gpt-4o-mini"),
  tools,
});

const result = await twexapiAgent.generate(
  `Search 25 recent tweets about Mastra MCP.
Return JSON with query, route_used, tweets[{tweet_id,text,author_username,created_at}],
has_more, next_cursor, and stop_reason.`
);

const handoff = JSON.parse(result.text) as TweetSearchHandoff;
await writeFile(
  "twexapi-mastra-handoff.json",
  JSON.stringify(handoff, null, 2),
  "utf8"
);

Valida el JSON antes de que otro flujo de trabajo lo consuma. El historial de conversación no es una base de datos de trabajos.

Conservar el contrato de respuesta MCP

Pasa solo los campos documentados de query y body de explore a twexapi_request.

Detén la paginación cuando se cumpla una de estas condiciones:

  • El agente recopila el total solicitado.
  • has_more o has_next_page pasa a ser false.
  • next_cursor falta o se repite.
  • Se alcanza el límite de páginas configurado.

Elimina duplicados de tweets y usuarios por tweet_id o user_id.

Mantener una entrega de agente reanudable

Páginas de tweets

Almacena tweet_id, text, author_username, created_at, has_more, next_cursor y la consulta original.

Filas de perfil

Almacena user_id, username, name, description, cantidades de seguidores y la entrada de búsqueda.

Filas de tendencias

Almacena país, tema, IDs de tweet y métricas de engagement.

Acciones de escritura

Almacena ruta, texto de vista previa y aprobación humana. Mantén las cookies fuera del archivo de entrega. Consulta.

Consulta Agent MCP Handoff para la lista de verificación completa.

Construir manejo de errores

Estado Significado Decisión del agente
400 Ruta o parámetros inválidos Corrige la solicitud antes de reintentar
401 API key faltante o inválida Detente y reemplaza la credencial
403 Acceso denegado o créditos Pausa escrituras; verifica Get Balance
429 Límite de tasa alcanzado Espera y luego reanuda el mismo cursor
5xx Fallo temporal del servidor Aplica backoff acotado a lecturas seguras

Nunca reintentes una escritura después de un timeout sin una verificación de lectura. Consulta Error Handling y Rate Limits.

Requerir aprobación antes de acciones en X

Call explore with include_writes true only when the user asked to post, like, follow, or DM.
Stop before any read_only: false call.
Show method, path, tweet text or target username, and media URLs.
Do not send cookie values in the model output.

Previsualiza con el CLI --dry-run, luego ejecuta a través de REST o el TypeScript SDK después de la aprobación.

Conectar múltiples servidores MCP

export const mcp = new MCPClient({
  servers: {
    twexapi: {
      url: new URL("https://api.twexapi.io/mcp"),
      requestInit: {
        headers: { "x-api-key": process.env.TWEXAPI_API_KEY! },
      },
    },
    twexapiDocs: {
      url: new URL("https://docs.twexapi.io/mcp"),
    },
  },
});

Mantén estable el nombre del servidor TwexAPI. Dale al agente solo las herramientas necesarias para el trabajo actual.

Versiones de paquetes

Paquete Rango compatible
Node.js >=20
@mastra/core >=0.10
@mastra/mcp >=0.10

Próximos pasos

¿Te ha resultado útil esta página?