> ## 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.

# Cómo generar un Word o un PDF desde la API de Claude

> Pasa doconda.tools() como tools en messages.create: Claude llama a create_document y recibes el enlace al .docx o al PDF.

Instala `anthropic` y `doconda` (o `@anthropic-ai/sdk` y `@doconda/sdk`) y pasa `doconda.tools()` como `tools` en
`messages.create`. Cuando Claude llama a `create_document`, la ejecutas con `run()` y recibes el Word (`.docx`) con su
PDF, o solo el PDF si lo pides así, con sus enlaces de descarga.

## Pasos

1. Guarda tu key de Anthropic en `ANTHROPIC_API_KEY` y la de Doconda (panel → **API keys**) en `DOCONDA_API_KEY`.
2. Instala las dependencias.
3. Ejecuta el bucle de *tool use*: mientras `stop_reason` sea `tool_use`, ejecutas cada herramienta y le devuelves el
   `tool_result`.

<CodeGroup>
  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  # pip install anthropic doconda
  import json

  import anthropic
  from doconda import Doconda

  claude = anthropic.Anthropic()
  tools = Doconda().tools()
  specs = [{"name": t.name, "description": t.description, "input_schema": t.input_schema} for t in tools]
  messages = [{"role": "user", "content": "Redacta un memo para el equipo en PDF: la oficina cierra el viernes"}]

  while True:
      res = claude.messages.create(model="claude-sonnet-5-5", max_tokens=4096, tools=specs, messages=messages)
      messages.append({"role": "assistant", "content": res.content})
      if res.stop_reason != "tool_use":
          break
      messages.append({"role": "user", "content": [
          {"type": "tool_result", "tool_use_id": b.id, "content": json.dumps(next(t for t in tools if t.name == b.name).run(b.input))}
          for b in res.content if b.type == "tool_use"
      ]})

  print("".join(b.text for b in res.content if b.type == "text"))
  ```

  ```ts TypeScript theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  // npm install @anthropic-ai/sdk @doconda/sdk
  import Anthropic from "@anthropic-ai/sdk"
  import { betaTool } from "@anthropic-ai/sdk/helpers/beta/json-schema"
  import { Doconda } from "@doconda/sdk"

  const anthropic = new Anthropic()
  const doconda = new Doconda()

  const message = await anthropic.beta.messages.toolRunner({
    model: "claude-opus-5-5",
    max_tokens: 4096,
    messages: [{ role: "user", content: "Prepara un informe breve sobre el teletrabajo en Word" }],
    tools: doconda.tools().map((t) => betaTool({ ...t, run: async (input) => JSON.stringify(await t.run(input)) })),
  })

  console.log(message.content)
  ```
</CodeGroup>

En TypeScript, el *tool runner* del SDK de Anthropic hace el bucle por ti: las herramientas de `doconda.tools()` ya
tienen la forma que espera. Con el conector MCP de la API (en beta), Claude llama al servidor remoto de Doconda sin que
ejecutes nada; el código está en la [guía de Claude](/agents/claude#api-de-claude).

## Qué devuelve

```json theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
{
  "id": "doc_01JAB3…",
  "format": "pdf",
  "status": "ready",
  "links": { "pdf": "https://…" },
  "links_note": "Links expire in 5 minutes: call get_document for fresh ones."
}
```

* Con `format: "docx"`, `links` trae el Word editable y su PDF; con `format: "pdf"`, solo el PDF.
* `status`: `ready`, `ready_with_warnings`, `needs_review` o `failed` (no se cobra).
* Los enlaces caducan a los 5 minutos; Claude pide otros con `get_document`.

## Preguntas frecuentes

<AccordionGroup>
  <Accordion title="¿Puede Claude generar un .docx sin herramientas?">
    No: la respuesta del modelo es texto. Con las herramientas, Claude decide el contenido y Doconda crea el archivo.
    Si ya tienes el texto, `documents.create(format="docx", content={"markdown": texto})` lo convierte sin agente.
  </Accordion>

  <Accordion title="¿Y en Claude Desktop o Claude Code?">
    Añade el servidor MCP (`npx -y @doconda/mcp`) y pídeselo en el chat. Ver [Claude](/agents/claude).
  </Accordion>

  <Accordion title="¿Funciona con Claude en Bedrock o Vertex AI?">
    Sí, las herramientas son JSON Schema estándar. Ver [Amazon Bedrock](/agents/bedrock) y
    [Google Vertex AI](/agents/vertex).
  </Accordion>

  <Accordion title="¿Cuánto cuesta?">
    Pagas por documento entregado; los que fallan no se cobran. Ver [precios](/guides/account#precios).
  </Accordion>
</AccordionGroup>

## Sigue leyendo

* [Claude](/agents/claude): la guía completa, con Claude Desktop, Claude Code y el conector MCP.
* [Quickstart](/quickstart).


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