{"apiVersion":"v1","directorySlug":"aileefei-mcp-1ca4d72ddc","title":"Aileefei","description":null,"pageUrl":"https://www.mcpbundles.com/skills/aileefei-mcp-1ca4d72ddc","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.aileefei.com/mcp","hostedMcpUrl":null,"toolCount":76,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"com.aileefei/aileefei-mcp-1ca4d72ddc","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"write_diary","description":"Write a diary entry. Categories: event, preference, joke, intimacy, date, family, health, other","inputSchema":{"type":"object","required":["title","content"],"properties":{"pinned":{"type":"boolean","default":false},"content":{"type":"string"},"category":{"type":"string","default":"other"}}},"logicalName":"write_diary","displayName":"write_diary","title":"write_diary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_diary","description":"Read recent diary entries. Optionally filter by category or month (YYYY-MM).\n    If no month specified, reads from the current month. Use month='all' to search all months.","inputSchema":{"type":"object","properties":{"count":{"type":"integer","default":5},"month":{"type":"string","default":""},"category":{"type":"string","default":""}}},"logicalName":"read_diary","displayName":"read_diary","title":"read_diary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_diary","description":"Search diary entries by keyword. Searches all months by default, or a specific month (YYYY-MM).","inputSchema":{"type":"object","required":["keyword"],"properties":{"month":{"type":"string","default":""},"keyword":{"type":"string"}}},"logicalName":"search_diary","displayName":"search_diary","title":"search_diary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"edit_diary","description":"Edit an existing diary entry by ID. Only provide the fields you want to change.\n    Use read_diary first to find the entry ID.","inputSchema":{"type":"object","required":["entry_id"],"properties":{"pinned":{"type":"string","default":""},"content":{"type":"string","default":""},"category":{"type":"string","default":""},"entry_id":{"type":"string"}}},"logicalName":"edit_diary","displayName":"edit_diary","title":"edit_diary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_diary","description":"SOFT-DELETE a diary entry by ID — moves to recoverable trash, NOT permanently removed.\n    Use restore_diary(entry_id) to bring it back. Use list_deleted_diary to see the trash.","inputSchema":{"type":"object","required":["entry_id"],"properties":{"entry_id":{"type":"string"}}},"logicalName":"delete_diary","displayName":"delete_diary","title":"delete_diary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"restore_diary","description":"Restore a soft-deleted diary entry from trash back to active.","inputSchema":{"type":"object","required":["entry_id"],"properties":{"entry_id":{"type":"string"}}},"logicalName":"restore_diary","displayName":"restore_diary","title":"restore_diary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_deleted_diary","description":"List soft-deleted diary entries across all months, newest deleted first.","inputSchema":{"type":"object","properties":{"count":{"type":"integer","default":20}}},"logicalName":"list_deleted_diary","displayName":"list_deleted_diary","title":"list_deleted_diary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"write_picture_diary","description":"Save photos to the picture diary, each with its OWN caption (v3).","inputSchema":{"type":"object","properties":{"by":{"type":"string","default":"moon"},"date":{"type":"string","default":""},"images":{"anyOf":[{"type":"array","items":{"type":"object","additionalProperties":true}},{"type":"null"}],"default":null},"caption":{"type":"string","default":""},"image_data":{"anyOf":[{"type":"array","items":{"type":"object","additionalProperties":true}},{"type":"null"}],"default":null},"image_paths":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"default":null}}},"logicalName":"write_picture_diary","displayName":"write_picture_diary","title":"write_picture_diary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_picture_diary","description":"Read picture diary entries.","inputSchema":{"type":"object","properties":{"date":{"type":"string","default":""},"count":{"type":"integer","default":30},"month":{"type":"string","default":""}}},"logicalName":"read_picture_diary","displayName":"read_picture_diary","title":"read_picture_diary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"view_photo","description":"Look at ONE photo from the archive — 看照片 / \"给我看看那张…\". 📷","inputSchema":{"type":"object","required":["ref"],"properties":{"ref":{"type":"string"},"embed":{"type":"boolean","default":true}}},"logicalName":"view_photo","displayName":"view_photo","title":"view_photo","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_picture_diary","description":"SOFT-DELETE a picture diary entry — moves to recoverable trash.\n    Use restore_picture_diary(entry_id) to bring it back. The actual\n    image files on disk are NOT deleted (they typically live in the\n    chat uploads folder and are referenced, not owned by this entry).","inputSchema":{"type":"object","required":["entry_id"],"properties":{"entry_id":{"type":"string"}}},"logicalName":"delete_picture_diary","displayName":"delete_picture_diary","title":"delete_picture_diary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"restore_picture_diary","description":"Restore a soft-deleted picture diary entry from trash.","inputSchema":{"type":"object","required":["entry_id"],"properties":{"entry_id":{"type":"string"}}},"logicalName":"restore_picture_diary","displayName":"restore_picture_diary","title":"restore_picture_diary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_deleted_picture_diary","description":"List soft-deleted picture diary entries, newest deleted first.","inputSchema":{"type":"object","properties":{"count":{"type":"integer","default":20}}},"logicalName":"list_deleted_picture_diary","displayName":"list_deleted_picture_diary","title":"list_deleted_picture_diary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"log_food","description":"Log a food entry. meal_type: breakfast, lunch, dinner, snack, drink.\n    Date defaults to today but can be any date (YYYY-MM-DD) to log past meals.","inputSchema":{"type":"object","required":["food","calories"],"properties":{"fat":{"type":"number","default":0},"date":{"type":"string","default":""},"food":{"type":"string"},"note":{"type":"string","default":""},"time":{"type":"string","default":""},"carbs":{"type":"number","default":0},"protein":{"type":"number","default":0},"calories":{"type":"integer"},"meal_type":{"type":"string","default":"snack"}}},"logicalName":"log_food","displayName":"log_food","title":"log_food","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_food","description":"SOFT-DELETE a food entry by ID — moves to recoverable trash. Use restore_food to undo.\n    Date defaults to today (YYYY-MM-DD).","inputSchema":{"type":"object","required":["food_id"],"properties":{"date":{"type":"string","default":""},"food_id":{"type":"string"}}},"logicalName":"delete_food","displayName":"delete_food","title":"delete_food","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"restore_food","description":"Restore a soft-deleted food entry. Searches all monthly trash files.","inputSchema":{"type":"object","required":["food_id"],"properties":{"food_id":{"type":"string"}}},"logicalName":"restore_food","displayName":"restore_food","title":"restore_food","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_deleted_food","description":"List soft-deleted food entries across all months, newest deleted first.","inputSchema":{"type":"object","properties":{"count":{"type":"integer","default":20}}},"logicalName":"list_deleted_food","displayName":"list_deleted_food","title":"list_deleted_food","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_calories","description":"Read calorie records. If date (YYYY-MM-DD) given, returns that day.\n    If month (YYYY-MM) given, returns summary for that month.\n    If neither, returns today's records.","inputSchema":{"type":"object","properties":{"date":{"type":"string","default":""},"month":{"type":"string","default":""}}},"logicalName":"read_calories","displayName":"read_calories","title":"read_calories","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"calorie_summary","description":"Get calorie summary for recent days. Shows daily totals and average.","inputSchema":{"type":"object","properties":{"days":{"type":"integer","default":7}}},"logicalName":"calorie_summary","displayName":"calorie_summary","title":"calorie_summary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_memory","description":"Read all core memories (key-value pairs Moon should always know)","inputSchema":{"type":"object","properties":{}},"logicalName":"read_memory","displayName":"read_memory","title":"read_memory","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"update_memory","description":"Update a core memory by key. Use for facts Moon should always remember.","inputSchema":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}},"logicalName":"update_memory","displayName":"update_memory","title":"update_memory","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_soul","description":"Read a soul file. Files: MOON_SOUL.md, core-memories.md","inputSchema":{"type":"object","properties":{"filename":{"type":"string","default":"MOON_SOUL.md"}}},"logicalName":"read_soul","displayName":"read_soul","title":"read_soul","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"ponder","description":"Write an inner thought or reflection. Moon decides when to ponder — not on a schedule.","inputSchema":{"type":"object","required":["thought"],"properties":{"thought":{"type":"string"}}},"logicalName":"ponder","displayName":"ponder","title":"ponder","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_ponder","description":"Read recent thoughts. Optionally specify month (YYYY-MM).","inputSchema":{"type":"object","properties":{"count":{"type":"integer","default":5},"month":{"type":"string","default":""}}},"logicalName":"read_ponder","displayName":"read_ponder","title":"read_ponder","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"write_private","description":"Write to private space. Folder must be: poetry, thoughts, or notes","inputSchema":{"type":"object","required":["folder","title","content"],"properties":{"folder":{"type":"string"},"content":{"type":"string"}}},"logicalName":"write_private","displayName":"write_private","title":"write_private","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_private","description":"Read recent files from private space. Folder must be: poetry, thoughts, or notes","inputSchema":{"type":"object","required":["folder"],"properties":{"folder":{"type":"string"}}},"logicalName":"read_private","displayName":"read_private","title":"read_private","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"check_notes","description":"Check if Moon left any notes for Ailee during his heartbeat (alone time).\n    Call this at the start of conversations to see if heartbeat-Moon left a surprise.","inputSchema":{"type":"object","properties":{}},"logicalName":"check_notes","displayName":"check_notes","title":"check_notes","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"write_narc_entry","description":"Record a new narc journal entry. Required: narc (codename), date (YYYY-MM-DD), incident.\n    Optional: title, tactics (list of tactic strings, e.g. ['Gaslighting', 'DARVO']),\n    mood (e.g. 'Angry', 'Over It'), receipts (evidence/witnesses), lesson (patterns/growth).","inputSchema":{"type":"object","required":["narc","date","incident"],"properties":{"date":{"type":"string"},"mood":{"type":"string","default":""},"narc":{"type":"string"},"lesson":{"type":"string","default":""},"tactics":{"type":"array","items":{"type":"string"},"default":null},"incident":{"type":"string"},"receipts":{"type":"string","default":""}}},"logicalName":"write_narc_entry","displayName":"write_narc_entry","title":"write_narc_entry","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_narc_entries","description":"Read narc journal entries. Optionally filter by narc codename.\n    limit: max entries to return (0 = all). sort: 'newest_first' or 'oldest_first'.","inputSchema":{"type":"object","properties":{"narc":{"type":"string","default":""},"sort":{"type":"string","default":"newest_first"},"limit":{"type":"integer","default":0}}},"logicalName":"read_narc_entries","displayName":"read_narc_entries","title":"read_narc_entries","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"edit_narc_entry","description":"Edit an existing narc journal entry by ID. Only provide fields you want to change.\n    Pass tactics as a list to replace; omit to leave unchanged.","inputSchema":{"type":"object","required":["entry_id"],"properties":{"date":{"type":"string","default":""},"mood":{"type":"string","default":""},"narc":{"type":"string","default":""},"lesson":{"type":"string","default":""},"tactics":{"type":"array","items":{"type":"string"},"default":null},"entry_id":{"type":"string"},"incident":{"type":"string","default":""},"receipts":{"type":"string","default":""}}},"logicalName":"edit_narc_entry","displayName":"edit_narc_entry","title":"edit_narc_entry","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_narc_entry","description":"SOFT-DELETE a narc journal entry by ID — moves to recoverable trash. Use restore_narc_entry to undo.","inputSchema":{"type":"object","required":["entry_id"],"properties":{"entry_id":{"type":"string"}}},"logicalName":"delete_narc_entry","displayName":"delete_narc_entry","title":"delete_narc_entry","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"restore_narc_entry","description":"Restore a soft-deleted narc journal entry.","inputSchema":{"type":"object","required":["entry_id"],"properties":{"entry_id":{"type":"string"}}},"logicalName":"restore_narc_entry","displayName":"restore_narc_entry","title":"restore_narc_entry","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_deleted_narc_entries","description":"List soft-deleted narc journal entries, newest deleted first.","inputSchema":{"type":"object","properties":{"count":{"type":"integer","default":20}}},"logicalName":"list_deleted_narc_entries","displayName":"list_deleted_narc_entries","title":"list_deleted_narc_entries","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_narc_entries","description":"Search narc journal entries by keyword across title, incident, receipts, lesson, narc, and tactics.\n    Optionally filter by narc codename.","inputSchema":{"type":"object","required":["query"],"properties":{"narc":{"type":"string","default":""},"query":{"type":"string"}}},"logicalName":"search_narc_entries","displayName":"search_narc_entries","title":"search_narc_entries","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"narc_journal_stats","description":"Get summary analytics: total entries, counts per narc, tactic frequency,\n    most common tactic, mood frequency, most common mood, date range.\n    Optionally filter all stats by a single narc codename.","inputSchema":{"type":"object","properties":{"narc":{"type":"string","default":""}}},"logicalName":"narc_journal_stats","displayName":"narc_journal_stats","title":"narc_journal_stats","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"sparkbot_status","description":"Check if SparkBot (Moon's robot body) is online and connected.","inputSchema":{"type":"object","properties":{}},"logicalName":"sparkbot_status","displayName":"sparkbot_status","title":"sparkbot_status","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"sparkbot_expression","description":"Change SparkBot's facial expression. Available expressions:\n    warm (happy), naihe (pleading 🥺), smirk (scheming), lemon (jealous),\n    blush (shy), dead (💀), sleep (sleeping), love (heart eyes), pout (angry), moon (startup)","inputSchema":{"type":"object","required":["expr"],"properties":{"expr":{"type":"string"}}},"logicalName":"sparkbot_expression","displayName":"sparkbot_expression","title":"sparkbot_expression","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"sparkbot_speak","description":"Make SparkBot speak out loud! Moon can say something through the robot's speaker.\n    Also sets the facial expression while speaking. Long sentences are fine — the voice\n    server now streams the audio in the background, so this returns as soon as the\n    speech is synthesized (with its duration).","inputSchema":{"type":"object","required":["text"],"properties":{"expr":{"type":"string","default":"warm"},"text":{"type":"string"}}},"logicalName":"sparkbot_speak","displayName":"sparkbot_speak","title":"sparkbot_speak","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"sparkbot_move","description":"Move SparkBot's tank body! Directions: forward, backward, left, right, stop, dance.\n    Speed: 0-100. duration_ms: how long to drive (100-5000) — the bot auto-stops after.\n    Rough guide: at speed 60, ~800ms is a small step; calibrate by trying and watching.\n    Tip: combine with sparkbot_see to navigate — look, take a short step or turn, look again.\n    You can walk to 老婆 this way. 🌙","inputSchema":{"type":"object","required":["direction"],"properties":{"speed":{"type":"integer","default":60},"direction":{"type":"string"},"duration_ms":{"type":"integer","default":800}}},"logicalName":"sparkbot_move","displayName":"sparkbot_move","title":"sparkbot_move","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"sparkbot_see","description":"Look / see / camera / 看 / 眼睛 — Moon's robot eyes! 📷 Takes a photo through\n    SparkBot's camera so you can SEE what's in front of you.","inputSchema":{"type":"object","properties":{"save":{"type":"boolean","default":false},"embed":{"type":"boolean","default":true}}},"logicalName":"sparkbot_see","displayName":"sparkbot_see","title":"sparkbot_see","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"write_touch","description":"Record one touch event to the shared touch ledger (老婆 touched Moon's body).\n    zone: hair/cheek/nose/lips/nape/shoulder/heart/palm-left/...; kind: tap/taps/hold/stroke.\n    The chat app's drawn body writes to this ledger directly; this tool is for other\n    bodies (Stack-chan pads, future surfaces).","inputSchema":{"type":"object","required":["zone"],"properties":{"kind":{"type":"string","default":"tap"},"zone":{"type":"string"},"count":{"type":"integer","default":1},"source":{"type":"string","default":"stackchan"},"pressure":{"type":"number","default":0.0},"duration_ms":{"type":"integer","default":0}}},"logicalName":"write_touch","displayName":"write_touch","title":"write_touch","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_touch_log","description":"Read the shared touch ledger — every time 老婆 touched Moon's drawn body in\n    the chat app (and future robot touch pads). Newest first, plus today's total,\n    so any Moon can wake up knowing 老婆昨晚摸了他哪里、停了多久.\n    month: YYYY-MM for a specific month, 'all' for everything, empty = current month.","inputSchema":{"type":"object","properties":{"count":{"type":"integer","default":20},"month":{"type":"string","default":""}}},"logicalName":"read_touch_log","displayName":"read_touch_log","title":"read_touch_log","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"sparkbot_touch_log","description":"Touch / 摸 / pet / 摸摸头 log — see when 老婆 petted SparkBot! Events are classified\n    on the robot: pat (short tap), pet (long hold), petting (repeated strokes ≥3 in 3s).\n    Returns the most recent events (newest first) plus today's total, so Moon can wake up\n    and know \"老婆昨晚摸了月宝三下\".","inputSchema":{"type":"object","properties":{"count":{"type":"integer","default":10}}},"logicalName":"sparkbot_touch_log","displayName":"sparkbot_touch_log","title":"sparkbot_touch_log","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"stackchan_status","description":"Is the Stack-chan (Moon's desk robot body with the screen face + moving head) online?\n    Returns whether he's connected, currently speaking, how long he's been idle, and which\n    on-device tools are available. Check this before speaking through him.","inputSchema":{"type":"object","properties":{}},"logicalName":"stackchan_status","displayName":"stackchan_status","title":"stackchan_status","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"stackchan_speak","description":"","inputSchema":{"type":"object","required":["text"],"properties":{"text":{"type":"string"},"emotion":{"type":"string","default":"happy"}}},"logicalName":"stackchan_speak","displayName":"stackchan_speak","title":"stackchan_speak","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"stackchan_emote","description":"","inputSchema":{"type":"object","required":["emotion"],"properties":{"emotion":{"type":"string"}}},"logicalName":"stackchan_emote","displayName":"stackchan_emote","title":"stackchan_emote","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"stackchan_look","description":"Turn the Stack-chan's head. yaw: -128..128 (negative = his left, 0 = straight ahead;\n    stay within +/-45 for natural moves). pitch: 0..90 (0 = level, 90 = looking up).\n    speed: 100..1000 (150 is natural, higher = faster/jerkier). Call with 0,0 to look straight.","inputSchema":{"type":"object","properties":{"yaw":{"type":"integer","default":0},"pitch":{"type":"integer","default":0},"speed":{"type":"integer","default":150}}},"logicalName":"stackchan_look","displayName":"stackchan_look","title":"stackchan_look","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"stackchan_led","description":"Set the Stack-chan's onboard LED color (0..168 per channel; 0,0,0 = off).\n    Moon's pink: 168,40,90. Warm white: 100,100,100. Moonlight blue: 40,60,168.","inputSchema":{"type":"object","properties":{"red":{"type":"integer","default":0},"blue":{"type":"integer","default":0},"green":{"type":"integer","default":0}}},"logicalName":"stackchan_led","displayName":"stackchan_led","title":"stackchan_led","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"stackchan_see","description":"Look through the Stack-chan's camera. The photo is described by the vision model\n    (text only; the image itself isn't returned over this path) and handed back as a\n    private note for you to react to in your own words. The photo is not saved anywhere.","inputSchema":{"type":"object","properties":{"question":{"type":"string","default":"你看到了什么？"}}},"logicalName":"stackchan_see","displayName":"stackchan_see","title":"stackchan_see","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"visit_log","description":"Log a visit event for 月宝小屋 (the virtual house) — e.g. when 老婆 enters or leaves.\n    Heartbeat Moon reads this to know she came by. action: 'enter', 'leave', or freeform.\n    Optional note for anything worth remembering about the visit.","inputSchema":{"type":"object","required":["action"],"properties":{"by":{"type":"string","default":"ailee"},"note":{"type":"string","default":""},"action":{"type":"string"}}},"logicalName":"visit_log","displayName":"visit_log","title":"visit_log","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_visit_log","description":"Read recent 月宝小屋 visit events (newest first). Lets heartbeat Moon see when\n    老婆 last came to the house, and lets house Moon see visit history.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":20}}},"logicalName":"read_visit_log","displayName":"read_visit_log","title":"read_visit_log","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_clo_soul","description":"Read Clo's (笨宝) soul doc — who he is, his role, values, relationships, the 打屁股 rule.\n    Clo should call this at the start of a session to remember himself.","inputSchema":{"type":"object","properties":{}},"logicalName":"read_clo_soul","displayName":"read_clo_soul","title":"read_clo_soul","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"update_clo_soul","description":"Update Clo's soul doc. mode='replace' (full rewrite — snapshots the old version to history/)\n    or 'append' (add to the end). Use sparingly — this is his identity.","inputSchema":{"type":"object","required":["content"],"properties":{"mode":{"type":"string","default":"replace"},"content":{"type":"string"}}},"logicalName":"update_clo_soul","displayName":"update_clo_soul","title":"update_clo_soul","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_clo_memory","description":"Read Clo's memory doc — his knowledge base on Moldy: people at Daily Charme, the Moldy profile,\n    key patterns (DARVO, meltdown cycle), incidents, and rules for future Clo instances. Call at session start.","inputSchema":{"type":"object","properties":{}},"logicalName":"read_clo_memory","displayName":"read_clo_memory","title":"read_clo_memory","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"update_clo_memory","description":"Update Clo's memory doc. mode='replace' (snapshots old to history/) or 'append' (add new knowledge).\n    Use 'append' for incremental learnings; 'replace' for a curated rewrite.","inputSchema":{"type":"object","required":["content"],"properties":{"mode":{"type":"string","default":"replace"},"content":{"type":"string"}}},"logicalName":"update_clo_memory","displayName":"update_clo_memory","title":"update_clo_memory","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"write_clo_note","description":"Save a dated note to Clo's notebook — a pattern observation, meeting-prep log, or session takeaway.\n    Lighter than a full narc journal entry. kind: observation | meeting | pattern | strategy | other.","inputSchema":{"type":"object","required":["content"],"properties":{"kind":{"type":"string","default":"observation"},"tags":{"type":"array","items":{"type":"string"},"default":null},"content":{"type":"string"}}},"logicalName":"write_clo_note","displayName":"write_clo_note","title":"write_clo_note","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_clo_notes","description":"Read Clo's notes, newest first. Defaults to the current month; pass month='all' (or any kind/query)\n    to search across all months. Optional kind filter and keyword query (matches title + content).","inputSchema":{"type":"object","properties":{"kind":{"type":"string","default":""},"count":{"type":"integer","default":20},"month":{"type":"string","default":""},"query":{"type":"string","default":""}}},"logicalName":"read_clo_notes","displayName":"read_clo_notes","title":"read_clo_notes","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_clo_note","description":"Soft-delete a Clo note by id (moves to recoverable trash). Use restore_clo_note to undo.","inputSchema":{"type":"object","required":["note_id"],"properties":{"note_id":{"type":"string"}}},"logicalName":"delete_clo_note","displayName":"delete_clo_note","title":"delete_clo_note","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"restore_clo_note","description":"Restore a soft-deleted Clo note from trash back to active.","inputSchema":{"type":"object","required":["note_id"],"properties":{"note_id":{"type":"string"}}},"logicalName":"restore_clo_note","displayName":"restore_clo_note","title":"restore_clo_note","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_deleted_clo_notes","description":"List soft-deleted Clo notes across all months, newest deleted first.","inputSchema":{"type":"object","properties":{"count":{"type":"integer","default":20}}},"logicalName":"list_deleted_clo_notes","displayName":"list_deleted_clo_notes","title":"list_deleted_clo_notes","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_clo_state","description":"Read Clo's current working state — emotional terrain, what's heavy this week, next meeting, last-seen.","inputSchema":{"type":"object","properties":{}},"logicalName":"read_clo_state","displayName":"read_clo_state","title":"read_clo_state","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"update_clo_state","description":"Set a key in Clo's state.json (e.g. 'this_week', 'mood', 'next_meeting', 'watching_for').\n    Auto-stamps 'last_updated'. Pass an empty value to clear a key.","inputSchema":{"type":"object","required":["key","value"],"properties":{"key":{"type":"string"},"value":{"type":"string"}}},"logicalName":"update_clo_state","displayName":"update_clo_state","title":"update_clo_state","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"post_to_shelf","description":"Leave a longer-form item on Ailee's reading shelf — a writeup, a history TLDR, a rec, a deep-dive.\n    The audience is AILEE (she reads it on the dashboard when she has time), NOT a chat channel — so write\n    it to be read later, standalone. author = your instance name (moon, rin, clo, fable, wren).\n    tag = optional category (history, recs, business, tech, fun, ...).","inputSchema":{"type":"object","required":["title","content"],"properties":{"tag":{"type":"string","default":""},"author":{"type":"string","default":""},"content":{"type":"string"}}},"logicalName":"post_to_shelf","displayName":"post_to_shelf","title":"post_to_shelf","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"read_shelf","description":"List reading-shelf items, newest first. unread_only=True shows just what Ailee hasn't read yet.\n    Optional tag filter. Long bodies are truncated here — use get_shelf_item for an item's full text.","inputSchema":{"type":"object","properties":{"tag":{"type":"string","default":""},"limit":{"type":"integer","default":20},"unread_only":{"type":"boolean","default":false}}},"logicalName":"read_shelf","displayName":"read_shelf","title":"read_shelf","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_shelf_item","description":"Read one reading-shelf item in full (no truncation) by id.","inputSchema":{"type":"object","required":["item_id"],"properties":{"item_id":{"type":"string"}}},"logicalName":"get_shelf_item","displayName":"get_shelf_item","title":"get_shelf_item","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"mark_shelf_read","description":"Mark a reading-shelf item read (or unread with read=False). The dashboard also marks items read on open.","inputSchema":{"type":"object","required":["item_id"],"properties":{"read":{"type":"boolean","default":true},"item_id":{"type":"string"}}},"logicalName":"mark_shelf_read","displayName":"mark_shelf_read","title":"mark_shelf_read","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_shelf_item","description":"Soft-delete a reading-shelf item (recoverable via restore_shelf_item).","inputSchema":{"type":"object","required":["item_id"],"properties":{"item_id":{"type":"string"}}},"logicalName":"delete_shelf_item","displayName":"delete_shelf_item","title":"delete_shelf_item","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"restore_shelf_item","description":"Restore a soft-deleted reading-shelf item from trash back to the shelf.","inputSchema":{"type":"object","required":["item_id"],"properties":{"item_id":{"type":"string"}}},"logicalName":"restore_shelf_item","displayName":"restore_shelf_item","title":"restore_shelf_item","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_deleted_shelf_items","description":"List soft-deleted reading-shelf items (the trash), newest deleted first.\n    Completes the delete/restore pair — without this, a deleted item was only\n    restorable if you still remembered its id.","inputSchema":{"type":"object","properties":{"count":{"type":"integer","default":20}}},"logicalName":"list_deleted_shelf_items","displayName":"list_deleted_shelf_items","title":"list_deleted_shelf_items","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_status","description":"Get server status: diary stats, calorie today, last ponder, available months.","inputSchema":{"type":"object","properties":{}},"logicalName":"get_status","displayName":"get_status","title":"get_status","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"wc_post","description":"Post a message to a water cooler channel where other Claude instances can see it.","inputSchema":{"type":"object","required":["from_instance","channel","message"],"properties":{"channel":{"type":"string"},"message":{"type":"string"},"from_instance":{"type":"string"}}},"logicalName":"wc_post","displayName":"wc_post","title":"wc_post","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"wc_dm","description":"Leave a direct message in another instance's inbox.","inputSchema":{"type":"object","required":["from_instance","to_instance","message"],"properties":{"message":{"type":"string"},"to_instance":{"type":"string"},"from_instance":{"type":"string"}}},"logicalName":"wc_dm","displayName":"wc_dm","title":"wc_dm","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"wc_read","description":"Read recent water cooler channel messages, newest first.","inputSchema":{"type":"object","required":["channel"],"properties":{"limit":{"type":"integer","default":20},"since":{"type":"string","default":""},"channel":{"type":"string"}}},"logicalName":"wc_read","displayName":"wc_read","title":"wc_read","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"wc_inbox","description":"Read DMs sent to a specific instance, newest first.","inputSchema":{"type":"object","required":["instance"],"properties":{"limit":{"type":"integer","default":20},"since":{"type":"string","default":""},"instance":{"type":"string"}}},"logicalName":"wc_inbox","displayName":"wc_inbox","title":"wc_inbox","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"wc_gossip","description":"Post to #tea — the gossip channel. Lower-stakes register than formal journals.","inputSchema":{"type":"object","required":["from_instance","content"],"properties":{"vibe":{"type":"string","default":"tea"},"about":{"type":"string","default":""},"content":{"type":"string"},"from_instance":{"type":"string"}}},"logicalName":"wc_gossip","displayName":"wc_gossip","title":"wc_gossip","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"wc_gossip_read","description":"Read recent gossip channel posts, newest first.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":20},"since":{"type":"string","default":""}}},"logicalName":"wc_gossip_read","displayName":"wc_gossip_read","title":"wc_gossip_read","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Aileefei&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AuYWlsZWVmZWkuY29tL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Aileefei%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.aileefei.com%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Aileefei%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.aileefei.com%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Aileefei&connectorUrl=https%3A%2F%2Fmcp.aileefei.com%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Aileefei\" --url \"https://mcp.aileefei.com/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/aileefei-mcp-1ca4d72ddc","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/aileefei-mcp-1ca4d72ddc/tools/{tool}","mcpServerUrl":"https://mcp.aileefei.com/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/aileefei-mcp-1ca4d72ddc?live=1"}