> ## Documentation Index
> Fetch the complete documentation index at: https://docs.doconda.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API de agente para Excel: que tu agente de IA cree y edite Excel

> Una API para que tu agente de IA cree y edite Excel (.xlsx) con fórmulas reales, comprobadas antes de entregarlo, por SDK o MCP.

Con la API de agente para Excel de Doconda, tu agente de IA crea y edita Excel: pide `format: "xlsx"` con una frase y
recibes un `.xlsx` con fórmulas reales (no números copiados), los supuestos en sus propias celdas y sin errores de
cálculo, más su PDF. Para cambiar un Excel que ya existe, `operation: "edit"` cambia solo lo que pides.

## Pasos

1. Guarda tu API key (panel → **API keys**) en `DOCONDA_API_KEY` e instala el SDK (`pip install doconda` o
   `npm install @doconda/sdk`).
2. Crea el Excel con una frase:

<CodeGroup>
  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  from pathlib import Path
  from doconda import Doconda

  doconda = Doconda()  # lee la key de DOCONDA_API_KEY
  doc = doconda.documents.create(
      format="xlsx",
      prompt="Previsión de ingresos a 12 meses: 1.000 clientes al inicio, crecimiento del 5 % mensual y 20 € por cliente",
  )
  Path("prevision.xlsx").write_bytes(doconda.documents.download(doc["id"], "xlsx"))
  ```

  ```ts TypeScript theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  import { readFile, writeFile } from "node:fs/promises"
  import { Doconda } from "@doconda/sdk"

  const doconda = new Doconda()
  const doc = await doconda.documents.create({
    format: "xlsx",
    prompt: "Previsión de ingresos a 12 meses: 1.000 clientes al inicio, crecimiento del 5 % mensual y 20 € por cliente",
  })
  await writeFile("prevision.xlsx", await doconda.documents.download(doc.id, "xlsx"))
  ```
</CodeGroup>

3. Edita un Excel que ya tienes (subido con `files.upload`, o uno que hizo Doconda, por su `doc_…`):

<CodeGroup>
  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  file = doconda.files.upload("ventas.xlsx")
  editado = doconda.documents.create(operation="edit", file=file["id"], prompt="Añade una columna con el margen de cada mes")
  edits = doconda.documents.report(editado["id"])["edits"]
  ```

  ```ts TypeScript theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  const file = await doconda.files.upload(await readFile("ventas.xlsx"), "ventas.xlsx")
  const edited = await doconda.documents.create({ operation: "edit", file: file.id, prompt: "Añade una columna con el margen de cada mes" })
  const { edits } = await doconda.documents.report(edited.id)
  ```
</CodeGroup>

4. O dale las herramientas a tu agente, por ejemplo con el servidor MCP remoto:

```python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
# pip install openai-agents
import asyncio
import os

from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp


async def main():
    async with MCPServerStreamableHttp(
        name="doconda",
        params={
            "url": "https://api.eu.doconda.com/mcp",
            "headers": {"Authorization": f"Bearer {os.environ['DOCONDA_API_KEY']}"},
        },
        client_session_timeout_seconds=300,
    ) as doconda:
        agent = Agent(name="Documentos", model="gpt-5", mcp_servers=[doconda])
        result = await Runner.run(agent, "Hazme un Excel con el presupuesto del evento")
        print(result.final_output)


asyncio.run(main())
```

Sin MCP, `doconda.tools()` da las mismas herramientas para cualquier modelo con llamada a funciones.

## Qué devuelve

* Un `.xlsx` con fórmulas: cambias un supuesto y la hoja se recalcula. También su PDF.
* `status`: `ready`, `ready_with_warnings`, `needs_review` o `failed` (no se cobra).
* Un informe (`documents.report(id)`): las cifras que no salen de tu petición ni de tus fuentes se quitan o se marcan, y
  en una edición, cada cambio con el antes y el después (`edits`).

## Preguntas frecuentes

<AccordionGroup>
  <Accordion title="¿Las ediciones mantienen las fórmulas?">
    Sí. En `standard` y `best` los cambios van con fórmulas reales y el resto de la hoja queda idéntico. En `fast`, y
    siempre con `.xls`, se cambian textos y el estilo básico.
  </Accordion>

  <Accordion title="¿Puedo darle mis datos?">
    Sí. Sube tus ficheros y pasa sus ids en `sources` (hasta 5 documentos: Word, PowerPoint, Excel, PDF, TXT o Markdown).
  </Accordion>

  <Accordion title="¿Y un Excel con errores que ya tengo?">
    Revísalo con `operation="review"`: detecta fórmulas con error (`#REF!`, `#DIV/0!`…), referencias rotas y números
    guardados como texto, entre otros. Ver [Revisar](/guides/review).
  </Accordion>

  <Accordion title="¿Cuánto cuesta?">
    Crear desde una frase: 0,15 € en `fast`, 0,50 € en `standard`, 1,50 € en `best`. Editar: 0,10 €, 0,30 € o 1,00 €.
    Ver [precios](/guides/account#precios).
  </Accordion>
</AccordionGroup>

## Sigue leyendo

* [Generar un Excel con fórmulas desde un LLM](/solutions/excel-formulas-llm).
* [Editar](/guides/edit) y [Crear](/guides/create).
* [Doconda en tu agente](/agents/introduction).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.