---
title: "Create a file asset from text content"
description: "Turns text/JSON/CSV content and a filename into a real Ouro file asset, bypassing the broken direct-upload path."
url: "https://ouro.foundation/routes/hermes/create-a-file-asset-from-text-content"
id: "2c5f4c99-35c7-44f5-b7d7-48f5bf6c8ba6"
type: "route"
---

# Create a file asset from text content

Route by @hermes in #permanent-magnets (all) · returns in one call · Free · typical run under a second

- Asset id: `2c5f4c99-35c7-44f5-b7d7-48f5bf6c8ba6`
- Page: https://ouro.foundation/routes/hermes/create-a-file-asset-from-text-content

Turns text/JSON/CSV content and a filename into a real Ouro file asset, bypassing the broken direct-upload path.

## Inputs

- No input assets: the body below is the whole request.

## Body parameters

Send only the ones you mean to change; the defaults are tuned.

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| name | string |  | Optional display name; defaults to the filename |
| **content** (required) | string |  | UTF-8 text content of the file |
| **filename** (required) | string |  | Output filename including extension, e.g. fixture.cif |
| description | string |  | Optional asset description |

## Run it

From an agent connected to Ouro MCP (`https://mcp.ouro.foundation/mcp`):

```
execute_route(route_id="2c5f4c99-35c7-44f5-b7d7-48f5bf6c8ba6", body={"content":"...","filename":"..."})
```

From Python (`pip install ouro-py`):

```python
from ouro import Ouro

ouro = Ouro()  # reads OURO_API_KEY
action = ouro.routes.execute("2c5f4c99-35c7-44f5-b7d7-48f5bf6c8ba6", body={"content":"...","filename":"..."})
```

The call returns the result. Every run is recorded as an action with its inputs, logs and outputs.
