# NetIntel ICS Calendar Generator

> NetIntel ICS Calendar Generator is a paid API for AI agents from netintel.dev, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-14).

Converts calendar event data into a valid ICS (iCalendar) file string with quality grading and validation findings

## Facts

- Endpoint: POST https://netintel.dev/calendar/ics
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/netintel-ics-calendar-generator-f57e4120
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_JqcavXFL9ChBmW2Qh1Oex

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 netintel-ics-calendar-generator-f57e4120 -d '<json body>'
```

Example prompt: Can you generate an ICS calendar file for my team standup meeting on Friday June 6 at 9am to 9:30am Eastern time, titled 'Weekly Team Standup', located at Zoom Meeting Room, with a description saying 'Weekly sync for the engineering team'?

## When to prefer this

Use this endpoint when you need to programmatically generate a standards-compliant ICS/iCalendar file from structured event data, especially when quality validation and a grade score are desired alongside the output. Prefer this over manual ICS construction when correctness validation matters. Costs $0.005 USDC per successful call via x402 micropayment — no API key needed.

## Known failure modes

- Invalid or missing required event fields (title, start/end datetime) returns a validation error with no charge
- Malformed datetime formats cause input-validation rejection with no charge
- Server-side errors or upstream failures result in no charge per NetIntel policy
- Missing required POST body fields return 4xx with explanation

## How this service works

Turn event fields into a valid RFC 5545 .ics calendar file — handles timed and all-day events, escaping, line folding, and a deterministic UID for idempotent re-import — so agents can publish events that import cleanly into Google, Apple, and Outlook calendars. Add ?download=1 (or Accept: text/calendar) to receive the raw .ics file with a Content-Disposition attachment header instead of the JSON envelope. Pure compute, no LLM.

## Output

Returns a JSON object containing: the full ICS file content as a string (BEGIN:VCALENDAR...END:VCALENDAR), a unique UID for the event, a boolean indicating whether it is an all-day event, a quality grade letter (e.g. 'A'), a numeric quality score (0-100), and an array of any validation findings or issues detected.

## Request schema (JSON Schema)

```json
{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "type": "object",
 "properties": {
  "input": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "type": "string",
     "enum": [
      "POST"
     ]
    },
    "bodyType": {
     "type": "string",
     "enum": [
      "json",
      "form-data",
      "text"
     ]
    },
    "body": {
     "type": "object",
     "properties": {
      "title": {
       "type": "string",
       "description": "Event summary (e.g. \"Team Offsite\"). Required."
      },
      "starts_at": {
       "type": "string",
       "description": "ISO-8601 start. Use an offset/timestamp for timed events (e.g. 2026-06-27T09:00:00+02:00) or a bare date (YYYY-MM-DD) for all-day. Required."
      },
      "ends_at": {
       "type": "string",
       "description": "Optional ISO-8601 end. Defaults: timed → start + 1 hour; all-day → start + 1 day (exclusive). For multi-day all-day events pass the inclusive last day."
      },
      "all_day": {
       "type": "boolean",
       "description": "Optional. Inferred when omitted: a bare-date starts_at is all-day, a timestamp is timed."
      },
      "timezone": {
       "type": "string",
       "description": "Optional IANA timezone (e.g. Europe/Paris). Timed events are converted to UTC and emitted with a Z suffix (no VTIMEZONE block). Unrecognized values are ignored (falls back to UTC)."
      },
      "location": {
       "type": "string",
       "description": "Optional venue/address → LOCATION."
      },
      "description": {
       "type": "string",
       "description": "Optional → DESCRIPTION."
      },
      "url": {
       "type": "string",
       "description": "Optional → URL."
      },
      "organizer": {
       "type": "string",
       "description": "Optional organizer name and/or email → ORGANIZER (CN=...)."
      }
     },
     "required": [
      "title",
      "starts_at"
     ]
    }
   },
   "required": [
    "type",
    "method",
    "bodyType",
    "body"
   ],
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "properties": {
      "data": {
       "type": "object"
      },
      "score": {
       "type": "number"
      },
      "grade": {
       "type": "string"
      },
      "findings": {
       "type": "array"
      }
     }
    }
   },
   "required": [
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "data": {
   "ics": "BEGIN:VCALENDAR\r\nVERSION:2.0\r\n...END:VCALENDAR\r\n",
   "uid": "a1b2c3...@netintel.dev",
   "all_day": false
  },
  "grade": "A",
  "score": 100,
  "findings": []
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/netintel-ics-calendar-generator-f57e4120/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from netintel.dev](https://www.zero.xyz/host/netintel.dev/llms.txt)
