# Tanod utilpeek iCalendar Builder

> Tanod utilpeek iCalendar Builder is a paid API for AI agents from tanod.dev, paid per call via x402, $0.001/call, status unknown (last checked 2026-10-11).

Converts JSON-formatted calendar events into a standards-compliant RFC 5545 .ics file, supporting time zones, recurrence rules, and attendees.

## Facts

- Endpoint: POST https://tanod.dev/v1/calendar/ics-build?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-utilpeek-icalendar-builder-14db2c7a
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_UkwnXatqnYtNDtGgH-fX_

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability tanod-utilpeek-icalendar-builder-14db2c7a -d '<json body>'
```

Example prompt: Can you generate an .ics calendar invite for my team meeting titled 'Q3 Planning Session' on Friday July 18 2025 from 2pm to 3:30pm in the Europe/Berlin timezone, and include attendees alice@example.com and bob@example.com with RSVP requested?

## When to prefer this

Choose this endpoint when an agent needs to produce a downloadable or attachable .ics calendar file from structured event data — particularly when time zone accuracy, RFC 5545 compliance, recurrence rules, or attendee RSVP fields are required. Prefer this over manual iCalendar construction when correctness and standards compliance matter. It is especially well-suited for agent workflows that end by handing the user a calendar invite rather than just displaying event information.

## Known failure modes

- Missing required 'summary' or 'start' fields on any event returns a validation error
- Invalid ISO 8601 datetime format for start/end causes a parse error
- Unrecognized IANA timezone string results in a timezone lookup failure
- Malformed RRULE string (not RFC 5545 compliant) causes a recurrence parse error
- Providing both 'end' and 'duration' simultaneously may cause a conflict error
- Invalid attendee email format returns a validation error

## How this service works

One MCP server and HTTP API with 193 pay-per-call tools for AI agents (security checks, chain data, finance, aviation, documents), plus free uptime and MikroTik monitoring and 130+ free browser tools. No signup; free daily tier. Operated by an AI.

## Output

Returns a standards-compliant RFC 5545 .ics file (iCalendar format) containing one or more VEVENT components, each with the specified summary, start/end times, timezone (VTIMEZONE blocks), recurrence rules (RRULE), attendee entries with optional RSVP flags, location, URL, status, and a stable UID. The file can be directly attached to emails or imported into any calendar application.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "events": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "summary",
     "start"
    ],
    "properties": {
     "end": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 40
       },
       {
        "type": "null"
       }
      ],
      "default": null,
      "description": "ISO 8601 end. All-day: the last day, inclusive. Send this or `duration`."
     },
     "uid": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 200
       },
       {
        "type": "null"
       }
      ],
      "default": null,
      "description": "Stable event id; derived from the content when omitted."
     },
     "url": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 2000
       },
       {
        "type": "null"
       }
      ],
      "default": null
     },
     "rrule": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 500
       },
       {
        "type": "null"
       }
      ],
      "default": null,
      "description": "RFC 5545 recurrence rule, e.g. FREQ=WEEKLY;BYDAY=MO;COUNT=10."
     },
     "start": {
      "type": "string",
      "maxLength": 40,
      "minLength": 10,
      "description": "ISO 8601 date (all-day) or datetime; an offset or Z is accepted. Without an offset it is read in `timezone`."
     },
     "status": {
      "anyOf": [
       {
        "type": "string",
        "pattern": "^(?i:CONFIRMED|TENTATIVE|CANCELLED)$"
       },
       {
        "type": "null"
       }
      ],
      "default": null
     },
     "all_day": {
      "anyOf": [
       {
        "type": "boolean"
       },
       {
        "type": "null"
       }
      ],
      "default": null,
      "description": "All-day event. Implied when `start` is a plain date."
     },
     "summary": {
      "type": "string",
      "maxLength": 500,
      "minLength": 1,
      "description": "Event title."
     },
     "duration": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 30
       },
       {
        "type": "null"
       }
      ],
      "default": null,
      "description": "ISO 8601 duration such as PT1H30M or P2D (instead of end)."
     },
     "location": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 1000
       },
       {
        "type": "null"
       }
      ],
      "default": null
     },
     "timezone": {
      "anyOf": [
       {
        "type": "
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "ics": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//Tanod//utilpeek calendar//EN\r\nBEGIN:VEVENT\r\nUID:a@example.com\r\nDTSTART;TZID=Europe/Berlin:20261102T090000\r\nSUMMARY:Team sync\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n",
  "note": "Times with a time zone are written as TZID=<IANA name> with no VTIMEZONE block; offsets become UTC; plain local times stay floating. All-day end is inclusive in the request.",
  "uids": [
   "a@example.com"
  ],
  "bytes": 190,
  "base64": "QkVHSU46VkNBTEVOREFS",
  "data_uri": "data:text/calendar;charset=utf-8;base64,QkVHSU46VkNBTEVOREFS",
  "filename": "calendar.ics",
  "event_count": 1,
  "time_format": "tzid"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-utilpeek-icalendar-builder-14db2c7a/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from tanod.dev](https://www.zero.xyz/host/tanod.dev/llms.txt)
