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

# OpenAI Agents SDK

> Genera Word, PowerPoint, Excel y PDF desde un agente del OpenAI Agents SDK.

```bash theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
pip install openai-agents doconda
```

## Con el SDK de Python

`doconda.tools()` es JSON Schema, que el Agents SDK acepta en `FunctionTool`:

```python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
import asyncio
import json

from agents import Agent, FunctionTool, Runner
from doconda import Doconda


def as_function_tool(t):
    async def invoke(ctx, args: str):
        return json.dumps(await asyncio.to_thread(t.run, json.loads(args)))

    return FunctionTool(
        name=t.name,
        description=t.description,
        params_json_schema=t.input_schema,
        on_invoke_tool=invoke,
        strict_json_schema=False,
    )


agent = Agent(
    name="Documentos",
    instructions="Crea los documentos que te pida el usuario y devuelve sus enlaces.",
    model="gpt-5",
    tools=[as_function_tool(t) for t in Doconda().tools()],
)

result = Runner.run_sync(agent, "Redacta un memo para el equipo: la oficina cierra el viernes")
print(result.final_output)
```

`strict_json_schema=False` porque el modo estricto marca todos los campos como obligatorios, y en Doconda casi todos
son opcionales (`prompt` o `markdown`, `style`, `name`…). Con el [SDK de Python](/sdk/python).

## Con MCP

```python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
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())
```

`client_session_timeout_seconds` sube la espera por llamada (5 s por defecto): un documento tarda más en estar listo.
En local, en vez del remoto:

```python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
from agents.mcp import MCPServerStdio

MCPServerStdio(
    name="doconda",
    params={"command": "npx", "args": ["-y", "@doconda/mcp"], "env": {"DOCONDA_API_KEY": "ak_eu_…"}},
    client_session_timeout_seconds=300,
)
```


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