Ics Privacy Scrub MCP tool
findutils:ics_privacy_scrub Redact an iCalendar (.ics) export before sharing it: per field, keep, generalize or remove the title (SUMMARY), description, location, links (URL, CONFERENCE and vendor meeting links), attendees, organizer, attachments, comments and categories. Defaults keep the schedule and hide the details: titles become "Busy", descriptions, locations, links, attendees, organizer, attachments and comments are removed, categories stay, alarms are removed, every UID is replaced (a recurring series keeps one shared UID), CLASS is set to PRIVATE, and vendor X- properties, CONTACT and RESOURCES are removed. DTSTART, DTEND, DURATION, RRULE, EXDATE, RDATE, RECURRENCE-ID, STATUS and TRANSP are kept, and shift_days can move every date by whole days without touching the TZID. Generalize writes "Private" for text fields, numbered stand-ins such as "Attendee 1 <[email protected]>" for people, and only the scheme and host of a link. Recurrence rules are never expanded and no calendar URL is fetched.
Needs an API key. Running a tool needs an API key. Keys are not for sale yet: ask for early access. About API keys
Arguments
application/json-
input
string required
The .ics file contents.
-
summary
string optional
What to do with SUMMARY: keep, generalize or remove. Default generalize. One of
keep · generalize · remove. Default"generalize". -
description
string optional
What to do with DESCRIPTION: keep, generalize or remove. Default remove. One of
keep · generalize · remove. Default"remove". -
location
string optional
What to do with LOCATION: keep, generalize or remove. Default remove. One of
keep · generalize · remove. Default"remove". -
url
string optional
What to do with URL: keep, generalize or remove. Default remove. One of
keep · generalize · remove. Default"remove". -
attendee
string optional
What to do with ATTENDEE: keep, generalize or remove. Default remove. One of
keep · generalize · remove. Default"remove". -
organizer
string optional
What to do with ORGANIZER: keep, generalize or remove. Default remove. One of
keep · generalize · remove. Default"remove". -
attach
string optional
What to do with ATTACH: keep, generalize or remove. Default remove. One of
keep · generalize · remove. Default"remove". -
comment
string optional
What to do with COMMENT: keep, generalize or remove. Default remove. One of
keep · generalize · remove. Default"remove". -
categories
string optional
What to do with CATEGORIES: keep, generalize or remove. Default keep. One of
keep · generalize · remove. Default"keep". -
summary_label
string optional
The title Generalize writes, such as Busy or Blocked. Default Busy. Default
"Busy". -
remove_other
boolean optional
Remove vendor X- properties, CONTACT and RESOURCES from every entry, and the calendar name and description from the header. Default true. Default
true. -
strip_alarms
boolean optional
Remove every VALARM. Default true. Default
true. -
regenerate_uids
boolean optional
Replace every UID with a random UUID; a recurrence master and its exceptions keep sharing one. Default true, so a re-import never collides with the original calendar. Default
true. -
mark_private
boolean optional
Set CLASS:PRIVATE on every entry. Default true. Default
true. -
shift_days
integer optional
Move every date by this many whole days (DTSTART, DTEND, DUE, RECURRENCE-ID, EXDATE, RDATE, RRULE UNTIL, absolute alarm triggers), keeping each value's zone. Default 0, at most 3650 either way. Default
0. -
calendar_name
string optional
Written as X-WR-CALNAME. Default: none when remove_other is on, else the source name.
Example arguments
Verified{
"input": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nUID:[email protected]\nDTSTART;TZID=Europe/Istanbul:20261006T100000\nDTEND;TZID=Europe/Istanbul:20261006T103000\nSUMMARY:Client Sync with Acme\nDESCRIPTION:Zoom https://zoom.us/j/123\nATTENDEE;CN=Jane:mailto:[email protected]\nBEGIN:VALARM\nACTION:DISPLAY\nTRIGGER:-PT10M\nDESCRIPTION:Reminder\nEND:VALARM\nEND:VEVENT\nEND:VCALENDAR\n"
} More Security tools
- Base32 Encode Encode UTF-8 text to RFC 4648 base32 (uppercase, "=" padding).
- Csp Generate Build a Content-Security-Policy header from a preset (strict, typical, google-analytics) and/or your own directives, and get the header…
- Data Sanitizer Sanitize untrusted text and return the cleaned output, a list of changes made, and a risk level.
- Dnpm Configurator Returns the five files of a hardened Docker-based npm wrapper (the ./dnpm bash script, .dnpm/Dockerfile, docker-compose.node.yml…
- Hash Comparison Tool Hash text with MD5, SHA-1, SHA-256, SHA-384, or SHA-512 and compare the hex digest with an expected hash.
- Password Breach Checker Return whether a password appears in known data breaches and how many times, using the Have I Been Pwned k-anonymity range API.