# Split Ics — MCP tool `findutils:split_ics`

Split one large iCalendar (.ics) file into smaller .ics files so an importer that rejects a big calendar accepts each part. Entries are cut by count in file order, at most chunk_size per part; a recurrence master and its modified occurrences (same UID) always stay in one part. Every part is a complete VCALENDAR with the source header properties and only the VTIMEZONE blocks its own entries reference. Recurrence rules are copied as they are, never expanded. Nothing is uploaded and no importer limit is assumed: pick the chunk size your calendar accepts.

- 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/split-ics/execute (no API keys, 60 req/min per IP)
- Reference page: https://findutils.com/mcp/split-ics/
- Same tool on the other surface: https://findutils.com/api/split-ics/

## Connect

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

Claude Desktop (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "findutils": {
      "url": "https://mcp.findutils.com/"
    }
  }
}
```

## Call the tool (verified example)

```bash
curl -X POST https://mcp.findutils.com/ \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "split_ics",
      "arguments": {
        "input": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nUID:a@example.com\nDTSTART:20260903T093000Z\nSUMMARY:Standup\nEND:VEVENT\nBEGIN:VEVENT\nUID:b@example.com\nDTSTART:20260904T093000Z\nSUMMARY:Review\nEND:VEVENT\nEND:VCALENDAR\n",
        "chunk_size": 1
      }
    }
  }'
```

## Input schema

| Argument | Type | Required | Description |
|---|---|---|---|
| `input` | string | yes | The .ics file contents. |
| `chunk_size` | integer | no | Entries per part (events, to-dos and journal entries count alike). Default 250, at most 5000. Default: `250`. |
| `name_prefix` | string | no | Written as X-WR-CALNAME on each part as "<prefix> (part N of M)". Default: the source calendar name is copied unchanged. |

Example arguments (verified):

```json
{
  "input": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nUID:a@example.com\nDTSTART:20260903T093000Z\nSUMMARY:Standup\nEND:VEVENT\nBEGIN:VEVENT\nUID:b@example.com\nDTSTART:20260904T093000Z\nSUMMARY:Review\nEND:VEVENT\nEND:VCALENDAR\n",
  "chunk_size": 1
}
```

## Also a REST endpoint

```bash
curl -X POST https://api.findutils.com/api/tools/split-ics/execute \
  -H "Content-Type: application/json" \
  -d '{
    "input": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nUID:a@example.com\nDTSTART:20260903T093000Z\nSUMMARY:Standup\nEND:VEVENT\nBEGIN:VEVENT\nUID:b@example.com\nDTSTART:20260904T093000Z\nSUMMARY:Review\nEND:VEVENT\nEND:VCALENDAR\n",
    "chunk_size": 1
  }'

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

Full REST reference: https://findutils.com/api/split-ics/ · OpenAPI 3.1 spec: https://findutils.com/api/openapi.json

---
Full catalog: POST https://mcp.findutils.com/ with method `tools/list` · https://findutils.com/mcp/ · https://findutils.com/llms.txt
