# Compatibilidad con OpenAI MCP

URL canónica: https://texttree.ai/es-419/docs/openai-mcp/
URL de Markdown: https://texttree.ai/es-419/docs/openai-mcp.md
Tipo de página: docs
Translation status: draft
Legal status: english_controls

## Resumen

Detalles de compatibilidad con el Apps SDK de OpenAI y MCP para las herramientas, prompts, recursos, esquemas y metadatos de TextTree.

## Contenido de la página

# Compatibilidad con OpenAI MCP

TextTree expone un endpoint MCP nativo que puede ser usado por clientes MCP
compatibles con OpenAI:

```txt
https://api.texttree.ai/mcp
```

El endpoint usa Streamable HTTP sin estado. Envía mensajes JSON-RPC con
`POST /mcp`, `Authorization: Bearer $TEXTREE_ACCESS_TOKEN`, `Accept:
application/json, text/event-stream` y `Content-Type: application/json`.
`GET /mcp` y `DELETE /mcp` devuelven `405` porque TextTree no asigna
sesiones MCP del lado del servidor.

## Descubrimiento OAuth

TextTree publica los metadatos de descubrimiento OAuth de MCP en:

- `https://api.texttree.ai/.well-known/oauth-protected-resource/mcp`
- `https://api.texttree.ai/.well-known/oauth-authorization-server/mcp`

Los clientes OAuth usan código de autorización con PKCE S256 y el recurso MCP
`https://api.texttree.ai/mcp`. Los tokens bearer pueden estar vinculados por audiencia a ese recurso
MCP. Los tokens sin audiencia siguen siendo aceptados por compatibilidad.

## Versiones del protocolo

TextTree actualmente admite:

- `2025-11-25`
- `2025-06-18`
- `2025-03-26`

El servidor anuncia capacidades para herramientas, prompts, recursos y
completions. `initialize` devuelve instrucciones específicas de TextTree que indican a los
agentes leer los recursos de incorporación y facturación, recopilar destinos reales
explícitos antes de la incorporación, y solo llamar a `messages.send` con
SMS aprobados por el destinatario y una clave de idempotencia estable.

## Métodos JSON-RPC

El endpoint MCP nativo acepta estos métodos JSON-RPC:

| Método | Propósito |
| --- | --- |
| `initialize` | Inicia el handshake de MCP y devuelve la versión del protocolo, las capacidades, la información del servidor y las instrucciones. |
| `notifications/initialized` | Marca al cliente como listo después de la inicialización. |
| `ping` | Verifica la disponibilidad del endpoint. |
| `tools/list` | Lista los descriptores de herramientas disponibles. |
| `tools/call` | Ejecuta una herramienta por nombre. |
| `resources/list` | Lista los recursos estáticos. |
| `resources/templates/list` | Lista las plantillas de recursos. |
| `resources/read` | Lee un recurso por URI. |
| `prompts/list` | Lista los prompts disponibles. |
| `prompts/get` | Obtiene un prompt por nombre. |
| `completion/complete` | Devuelve autocompletados de argumentos para los valores de path, sender path y región. |

`notifications/initialized` y otros mensajes `notifications/*` no reciben
respuesta. Como se indicó anteriormente, `GET /mcp` y `DELETE /mcp` devuelven `405`.

## Herramientas

El registro de herramientas actual es:

| Herramienta | Alcance | Propósito |
| --- | --- | --- |
| `messages.send` | `messages:write` | Encola un SMS saliente a través de la misma ruta de mensajería que `/api/v1/messages`. |
| `onboarding.status` | `onboarding:read` | Inspecciona el estado de incorporación, saldo, facturas y preparación de SMS. |
| `onboarding.create_invoice` | `onboarding:write` | Crea o reutiliza una factura de financiamiento de lanzamiento. |
| `onboarding.invoice_status` | `onboarding:read` | Verifica el estado de la factura de financiamiento. |
| `onboarding.test_sms` | `onboarding:write` | Envía el SMS de prueba fijo de incorporación de Fast Send. |
| `onboarding.request_dedicated_number` | `onboarding:write` | Envía los datos del negocio para la ruta recomendada de Número Dedicado. |

Las llamadas a herramientas a través de MCP nativo requieren `mcp:execute` más cualquier alcance específico de la herramienta.
La ruta REST heredada `POST /mcp/tools/:name` también requiere `mcp:execute` más
el alcance específico de la herramienta.

## Estructura del descriptor de herramientas

`tools/list` devuelve descriptores con:

- `name`, `title` y `description`
- `inputSchema` de JSON Schema 2020-12
- `outputSchema` de JSON Schema 2020-12
- Anotaciones MCP: `readOnlyHint`, `destructiveHint`, `idempotentHint` y
  `openWorldHint`
- `_meta["texttree/required_scope"]`
- `_meta["texttree/timeout_ms"]`

Los campos de widgets de UI del Apps SDK de OpenAI no se proporcionan actualmente. TextTree no
incluye un componente web del Apps SDK, por lo que los descriptores no incluyen
`_meta.ui.resourceUri` ni `_meta["openai/outputTemplate"]`. Si TextTree agrega una
UI de aplicación de ChatGPT más adelante, esos campos deberían apuntar al recurso de plantilla de UI y
los descriptores deberían reflejar cualquier `securitySchemes` que necesiten los clientes más antiguos.

## Prompts

Prompts MCP actuales:

- `texttree.onboard_agent`
  - argumentos: `path` (`dedicated_number` o `fast_send`), `region`
  - propósito: guiar a un agente a través de la incorporación de Número Dedicado o Fast Send
- `texttree.first_send`
  - argumentos: `recipient_context`, `sender_path` (`dedicated_number` o
    `fast_send`)
  - propósito: preparar un primer envío de SMS seguro después de la incorporación y el financiamiento

Los autocompletados de prompts están disponibles para los argumentos de path, sender path y región.

## Recursos y plantillas

Recursos actuales:

- `texttree://mcp/tools`
- `texttree://onboarding/status`
- `texttree://billing/status`
- `texttree://messages/recent`

Plantillas de recursos actuales:

- `texttree://invoices/{id}`
- `texttree://messages/{id}`
- `texttree://numbers/{id}`
- `texttree://onboarding/checklist`
- `texttree://billing/readiness`
- `texttree://elicitations/{correlation_id}`

Las lecturas de recursos aplican sus alcances de TextTree específicos por recurso antes de devolver
datos.

## Modelo de seguridad

`messages.send` es la única herramienta MCP actual que encola un SMS saliente. Está
marcada como destructiva y de mundo abierto, requiere `messages:write` y pasa por
las mismas puertas de supresión, gasto, preparación del remitente y trabajador de entrega que
`POST /api/v1/messages`.
