# Csv To Ics — REST API endpoint `csv-to-ics`

Turn a CSV of events into an iCalendar (.ics) file that Google Calendar, Apple Calendar and Outlook import. Columns are matched by name: Subject or Title, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location and a few aliases, so a Google Calendar or Outlook export maps with no configuration; column_map overrides any of them. Each row needs a title and a start. A row with no time, or All Day Event set, becomes an all-day event. Times are written as stated; an optional IANA time zone is stamped on them, UTC writes Z, and no zone writes floating time. Rows without a title or a readable start are skipped and listed. Recurrence is not inferred from text.

- Category: productivity
- MCP server: https://mcp.findutils.com/ (Streamable HTTP, no API keys, 120 req/min per IP)
- REST endpoint: POST https://api.findutils.com/api/tools/csv-to-ics/execute (no API keys, 60 req/min per IP)
- Reference page: https://findutils.com/api/csv-to-ics/
- Same tool on the other surface: https://findutils.com/mcp/csv-to-ics/

## Call the endpoint (verified example)

```bash
curl -X POST https://api.findutils.com/api/tools/csv-to-ics/execute \
  -H "Content-Type: application/json" \
  -d '{
    "input": "Subject,Start Date,Start Time,End Date,End Time,All Day Event,Location\nStandup,09/03/2026,9:30 AM,09/03/2026,10:15 AM,False,Room 4\nOffsite,09/05/2026,,09/06/2026,,True,\n",
    "timezone": "Europe/Istanbul"
  }'

# Parameter schema
curl https://api.findutils.com/api/tools/csv-to-ics
```

## Input schema

| Argument | Type | Required | Description |
|---|---|---|---|
| `input` | string | yes | CSV text with a header row. |
| `delimiter` | string | no | Field separator. Default: detected from the header (comma, semicolon, tab or pipe). |
| `calendar_name` | string | no | Written as X-WR-CALNAME so the calendar app shows it. Default: none. |
| `timezone` | string | no | IANA zone such as Europe/Istanbul, stamped on every timed event as TZID. UTC writes a Z suffix. Default: none, so times float and the importing calendar reads them in its own zone. A Time Zone column overrides it per row. |
| `date_format` | string (auto \| ymd \| dmy \| mdy) | no | How to read a date like 03/04/2026. auto (default): month-first unless a part is above 12. ISO dates are always read as-is. Default: `"auto"`. |
| `default_duration_minutes` | integer | no | Length of a timed event that has no end. Default 60. Default: `60`. |
| `column_map` | object | no | Header name per field when the automatic match is wrong: summary, start, start_time, end, end_time, all_day, description, location, private, uid, url, categories, timezone. |

Example arguments (verified):

```json
{
  "input": "Subject,Start Date,Start Time,End Date,End Time,All Day Event,Location\nStandup,09/03/2026,9:30 AM,09/03/2026,10:15 AM,False,Room 4\nOffsite,09/05/2026,,09/06/2026,,True,\n",
  "timezone": "Europe/Istanbul"
}
```

OpenAPI 3.1 spec: https://findutils.com/api/openapi.json · Interactive docs: https://findutils.com/api/docs/

## Also an MCP tool

```bash
claude mcp add findutils --transport http https://mcp.findutils.com/
```

Then ask the client to call `findutils:csv_to_ics`. Full MCP reference: https://findutils.com/mcp/csv-to-ics/

---
Full catalog: GET https://api.findutils.com/api/tools · https://findutils.com/api/ · https://findutils.com/llms.txt
