# Agentes de IA y MCP

¿Estás construyendo un agente de IA que realice cálculos astrológicos reales en lugar de alucinaciones? **AstroWay** se conecta a **Claude (Anthropic), ChatGPT-4 (OpenAI), Llama 3.3 (Groq), DeepSeek, Google Gemini, Mistral** mediante MCP, archivos *llms.txt* o llamadas HTTP directas. Tres formas de integrarlo: elige según el tipo de agente:

- **`llms.txt`** — archivos de descubrimiento para agentes que leen documentación (Cursor IDE, Windsurf, Claude en el navegador, pipelines RAG personalizados en LangChain/LlamaIndex).
- **Servidor MCP** — *zero-code* para Claude Desktop, Cursor IDE, Windsurf, VS Code (CLI de llm) y cualquier cliente compatible con MCP (incluyendo GPT con MCP a través de OpenAI Realtime API).
- **API HTTP** — llamada directa desde tu propio agente o framework (LangChain, LlamaIndex, AutoGen, CrewAI).

## llms.txt — descubrimiento para agentes de IA

El sitio expone dos archivos legibles por máquina en formato [llms.txt](https://llmstxt.org/):

- **[`/llms.txt`](https://api.astroway.info/llms.txt)** — índice de todas las páginas de documentación agrupadas por secciones (Referencia de API, Casos de uso, Ejemplos, Productos). Es pequeño y cabe en cualquier *context window*.
- **[`/llms-full.txt`](https://api.astroway.info/llms-full.txt)** — todo el contenido de la documentación en un solo archivo de texto plano. Ideal para indexación offline en una base de datos vectorial o para inyectar todo el contenido en el *prompt*.

### ¿Cuándo usarlos?

| Escenario | Archivo |
|---|---|
| Cursor/Windsurf: *"lee la documentación de AstroWay y ayúdame con la integración"* | `/llms.txt` (el agente cargará automáticamente las secciones necesarias) |
| Pipeline RAG personalizado / base de datos vectorial para un bot de FAQ | `/llms-full.txt` (una sola petición: todo el corpus) |
| Claude/ChatGPT en el navegador: *"aquí está nuestra API, construye un cliente"* | Pegar `/llms-full.txt` en el *prompt* |
| Agente en producción con ejecución de llamadas | Servidor MCP o API HTTP (ver abajo) |

### Ejemplo: integrar en tu agente

```ts
const docs = await fetch('https://api.astroway.info/llms-full.txt').then(r => r.text());

const systemPrompt = `Eres un asistente de integración para la API de AstroWay.
Documentación:
${docs}

Cuando el usuario pregunte cómo hacer X, devuelve un fragmento de código funcional usando su clave de API.`;
```

<Aside type="note">
Los archivos se regeneran automáticamente con cada lanzamiento del sitio. La frescura está garantizada: la versión de la API al final de `/llms.txt` coincide con el *deploy* actual en producción.
</Aside>

## Servidor MCP (recomendado para Claude Desktop)

El *Model Context Protocol* (MCP) es un estándar abierto para conectar herramientas a modelos de IA. El servidor MCP de **AstroWay** proporciona 25 herramientas para cálculos e interpretaciones astrológicas.

### Configuración para Claude Desktop

Añade esto a `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "astroway": {
      "command": "npx",
      "args": ["@astroway/mcp"],
      "env": {
        "ASTROWAY_API_KEY": "aw_live_tu_clave_aqui"
      }
    }
  }
}
```

Tras reiniciar Claude Desktop, verás 25 herramientas astrológicas disponibles.

### ¿Qué puede hacer el servidor MCP?

| Herramienta | Función |
|---|---|
| `natal_chart` | Cálculo de carta natal |
| `synastry` | Sinastría entre dos personas |
| `daily_horoscope` | Horóscopo diario |
| `interpret_natal` | Interpretación de carta natal con IA |
| `human_design` | Carta completa de Diseño Humano |
| `transits` | Tránsitos actuales |

Hay un total de 25 herramientas que cubren cálculos básicos e interpretaciones con IA.

### Ejemplo de diálogo con Claude

> **Usuario:** Construye la carta natal de una persona nacida el 14 de julio de 1990 a las 14:30 en Kiev. ¿Qué significa el Sol en Cáncer en la casa 10?
>
> **Claude:** *Usa `natal_chart` para calcularla y luego `interpret_placement` para interpretar. Devuelve las posiciones planetarias con datos reales y una interpretación significativa.*

## API HTTP

Para agentes de IA sin soporte para MCP, usa la API HTTP directamente.

### Para generar contenido

<Tabs syncKey="lang">
  <TabItem label="TypeScript">
    ```ts
    // El agente de IA invoca /interpret/natal para la interpretación
    const r = await fetch('https://api.astroway.info/v1/interpret/natal', {
      method: 'POST',
      headers: {
        'X-Api-Key': process.env.ASTROWAY_API_KEY!,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        date: '1990-07-14',
        time: '14:30:00',
        timezoneOffset: 3,
        latitude: 50.4501,
        longitude: 30.5234,
      }),
    });

    const result = await r.json();
    // result.text — interpretación lista con IA
    // result.disclaimer — aviso legal para mostrar
    ```
  </TabItem>
  <TabItem label="Python">
    ```python

    r = requests.post(
        'https://api.astroway.info/v1/interpret/natal',
        headers={'X-Api-Key': os.environ['ASTROWAY_API_KEY']},
        json={
            'date': '1990-07-14',
            'time': '14:30:00',
            'timezoneOffset': 3,
            'latitude': 50.4501,
            'longitude': 30.5234,
        },
    )
    result = r.json()
    # result['text'] — interpretación lista con IA
    # result['disclaimer'] — aviso legal para mostrar
    ```
  </TabItem>
  <TabItem label="cURL">
    ```bash frame="terminal"
    curl -X POST https://api.astroway.info/v1/interpret/natal \
      -H "X-Api-Key: $ASTROWAY_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "date": "1990-07-14",
        "time": "14:30:00",
        "timezoneOffset": 3,
        "latitude": 50.4501,
        "longitude": 30.5234
      }'
    ```
  </TabItem>
  <TabItem label="PHP">
    ```php
    <?php
    use GuzzleHttp\Client;

    $aw = new Client(['base_uri' => 'https://api.astroway.info/v1/']);
    $r = $aw->post('interpret/natal', [
        'headers' => ['X-Api-Key' => getenv('ASTROWAY_API_KEY')],
        'json' => [
            'date' => '1990-07-14',
            'time' => '14:30:00',
            'timezoneOffset' => 3,
            'latitude' => 50.4501,
            'longitude' => 30.5234,
        ],
    ]);

    $result = json_decode($r->getBody(), true);
    // $result['text']       — interpretación lista con IA
    // $result['disclaimer'] — aviso legal para mostrar
    ```
  </TabItem>
</Tabs>

### Para cálculos + tu propio LLM

```ts
// 1. Obtén los datos crudos mediante /chart (más barato: 20 créditos)
const chart = await fetch('https://api.astroway.info/v1/chart', { ... });
const data = await chart.json();

// 2. Pásalos a tu LLM
const prompt = `Interpreta esta carta natal: ${JSON.stringify(data.planets)}`;
const llmResponse = await myLLM.generate(prompt);
```

<Aside type="tip">
Si solo necesitas la interpretación, usa `/interpret/*` (50 créditos, texto listo). Si quieres controlar el *prompt*, usa `/chart` (20 créditos) y pasa los datos a tu propio LLM.
</Aside>

## Escenarios

### Asistente astrológico personal

Servidor MCP + Claude/ChatGPT. El usuario pregunta, el agente calcula e interpreta. Presupuesto: plan *Free* para uso personal.

### Bot de contenido para redes sociales

Generación diaria de horóscopos para los 12 signos mediante `/horoscope/daily`. 12 peticiones al día = 240 créditos. El plan *Free* tiene un margen más que suficiente.

### Plataforma de coaching con IA

`/interpret/natal` + `/interpret/transits` para cada cliente. 100 clientes/día = 10 000 créditos/día. Plan *Pro*.

<CardGrid>
  <LinkCard title="Empezar rápido →" href="/getting-started/" description="Primera petición en 5 minutos" />
  <LinkCard title="API de Horóscopos" href="/products/horoscope-api/" description="Interpretaciones y horóscopos con IA" />
  <LinkCard title="Planes" href="/pricing/" description="Desde *Free* hasta *Enterprise*" />
</CardGrid>
