# Tanod utilpeek RRULE Expander

> Tanod utilpeek RRULE Expander 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).

Expands an RFC 5545 RRULE recurrence rule into a list of concrete dates/datetimes in a specified IANA time zone, correctly handling DST transitions.

## Facts

- Endpoint: POST https://tanod.dev/v1/calendar/rrule?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-rrule-expander-72ea0405
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_fZz9sSpvHoh-3Cm58g9E3

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-rrule-expander-72ea0405 -d '<json body>'
```

Example prompt: Expand this recurrence rule — RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR — starting from 2025-03-01T09:00:00 in America/New_York, and give me the next 50 occurrences, skipping 2025-03-17T09:00:00.

## When to prefer this

Choose this endpoint when you need accurate, DST-correct expansion of RFC 5545 RRULE strings into concrete dates — particularly for time zones that observe daylight saving time where wall-clock semantics must be preserved. Prefer it over client-side recurrence libraries when the agent environment lacks a reliable rrule/tz library, or when you need a consistent, deterministic server-side answer with exclusion date support and windowed filtering.

## Known failure modes

- Invalid or malformed RRULE string returns a 400 error
- Unknown or invalid IANA timezone string returns a 400 error
- dtstart missing or unparseable ISO 8601 value causes a 400 error
- limit out of range (below 1 or above 1000) causes a 400 error
- between array with non-ISO dates returns a 400 error
- Payment failure via x402 returns a 402 response
- Rule that produces zero occurrences in the requested window returns an empty list

## 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 list of concrete ISO 8601 datetime strings representing each expansion of the recurrence rule, correctly adjusted for DST in the specified IANA timezone, up to the requested limit or bounded by the provided date window.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "limit": {
   "type": "integer",
   "default": 100,
   "maximum": 1000,
   "minimum": 1,
   "description": "Most occurrences to return (1-1000)."
  },
  "rrule": {
   "type": "string",
   "maxLength": 500,
   "minLength": 5,
   "description": "RFC 5545 RRULE, with or without the RRULE: prefix."
  },
  "until": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 40
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Extra upper bound (ISO 8601)."
  },
  "between": {
   "anyOf": [
    {
     "type": "array",
     "items": {
      "type": "string"
     },
     "maxItems": 2,
     "minItems": 2
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "[from, to] ISO 8601 window (inclusive)."
  },
  "dtstart": {
   "type": "string",
   "maxLength": 40,
   "minLength": 10,
   "description": "ISO 8601 first occurrence (date or datetime)."
  },
  "exdates": {
   "anyOf": [
    {
     "type": "array",
     "items": {
      "type": "string"
     },
     "maxItems": 100
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "ISO 8601 occurrences to leave out."
  },
  "timezone": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 64
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "IANA zone the rule runs in (wall-clock times keep across DST). Default UTC."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "note": "Computed with python-dateutil in the given time zone; wall-clock times keep across DST changes. The search stops at search_horizon.",
  "count": 3,
  "rrule": "FREQ=WEEKLY;BYDAY=MO,WE;COUNT=3",
  "dtstart": "2026-10-26T09:00:00+01:00",
  "timezone": "Europe/Berlin",
  "truncated": false,
  "occurrences": [
   "2026-10-26T09:00:00+01:00",
   "2026-10-28T09:00:00+01:00",
   "2026-11-02T09:00:00+01:00"
  ],
  "search_horizon": "2126-10-02T09:00:00+01:00",
  "horizon_reached": false
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-utilpeek-rrule-expander-72ea0405/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)
