Achriom
The media memory layer for AI agents and their humans.
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data
What it can do
- Search: Search the USER'S COLLECTION by title, creator, genre, or theme. Literal keyword match only - the query must actually appear in the item's title/creator/genre/theme text, or it returns nothing
- Get Details: Get FULL details of an item FROM THE USER'S COLLECTION including AI analysis, user notes, rating, timeline, and all metadata. For albums: includes track list with durations. For box sets:
- Get Stats: Get collection statistics including progress, rating distribution, genre/theme breakdown, and timeline. If no media_type specified, returns combined stats.
What data it sees
Do you need an account
No: the server works without sign-in
The media memory layer for AI agents and their humans. Your AI client gets 43 tools to search your collection, add items, update ratings, build cross-media lists, preview music, and find patterns across everything you've read, watched, played, and listened to.
Server tool list (43)
Raw names from tools/list. Only developers need these.
| search | Search the USER'S COLLECTION by title, creator, genre, or theme. Literal keyword match only - the query must actually appear in the item's title/creator/genre/theme text, or it returns nothing. Returns items they own with status, ratings, and for box sets, the list of contained albums. Use this to answer questions about what the user has. For generic, thematic, mood, or conceptual queries (e.g. "something about grief", "a film podcast") where the exact wording may not appear in any field, use `search_library` instead - it searches by meaning, not keyword. |
| get_details | Get FULL details of an item FROM THE USER'S COLLECTION including AI analysis, user notes, rating, timeline, and all metadata. For albums: includes track list with durations. For box sets: lists ALL contained albums. Use this to answer specific questions about items the user owns. |
| get_stats | Get collection statistics including progress, rating distribution, genre/theme breakdown, and timeline. If no media_type specified, returns combined stats. |
| update_status | Update status. Books: unread, reading, finished, abandoned. Movies/shows/anime: unwatched, watching, watched, abandoned. Albums: unheard, listening, played, saved. Games: unplayed, playing, played, saved, on_hold, abandoned. |
| update_rating | Set or update user rating. Supports half-stars: 0.5 to 5.0 in 0.5 increments (e.g. 3.5). |
| update_notes | Add or update personal notes for an item. |
| create_list | Create a named list. Lists are private, cross-media collections the user curates ("Halloween marathon", "Beach house"). Items from any media type can go on one list. |
| add_to_list | Add a library item to a list by title. Creates the list if it does not exist. The item must already be in the library (use add_item first if not). |
| remove_from_list | Remove an item from a list by title. The item stays in the library. |
| get_list | Show the user's lists. With a name: that list's items in order. Without: all lists with counts. |
| log_event | Log a completion or a re-watch/re-read/re-listen with a date. Use when the user mentions finishing something again ("watched Heat again last night", "reread Dune"). The first finish is tracked by status; this records repeats so they show in history and stats. |
| set_format | Set how a book was read: print, ebook, audiobook, or ereader. |
| get_show_progress | Read a TV show's season-by-season watch progress and the next unwatched episode ("up next"). |
| mark_tv_watched | Mark TV progress. Give season+episode to mark that episode; add through=true to mark everything up to it; give season only to mark the whole season; give neither to mark the whole show. Set watched=false to unmark. |
| set_progress | Update how far the user is through an in-progress item. Books: current page. Shows: current season + episode. Anime: episodes watched. |
| set_priority | Set the priority of an item in the collection. High = want this next, normal = standard backlog, low = speculative or distant. |
| get_by_rating | Get items filtered by user rating range. |
| get_by_status | Get items filtered by status. Books: unread, reading, finished, abandoned. Movies/shows/anime: unwatched, watching, watched, abandoned. Albums: unheard, listening, played, saved. Podcasts: want_to_listen, listening, caught_up, dropped. Games: unplayed, playing, played, saved, on_hold, abandoned. Pass status "all" for any media type to return items regardless of status. |
| get_timeline | Get timeline showing items started and finished over time. |
| get_recently_added | List items by when they were ADDED to the library (newest first). Use for "show me the last N things I added", "my last 8 vinyl records", "what did I add recently". This is addition order — different from get_timeline, which orders by reading/watching dates. Returns title, creator, media_type, status, rating, and when each was added. |
| edit_item | Correct an item in THIS user's library. new_title/new_creator save a personal override visible only to them; the shared catalog entry is untouched. new_external_id relinks the item to a different catalog entry, which is the correct fix when the wrong film/show/album was added (re_enrich cannot fix a wrong match, it only refetches the same entry). Errors if no change field is supplied. |
| lookup_item | Search EXTERNAL databases (NOT the user's collection) to find items BEFORE adding them. Use search/get_details for items the user already owns. Data sources: Books=OpenLibrary, Movies=TMDB, Shows=TVDB (falls back to TMDB), Albums=Discogs, Anime=AniList, Games=IGDB. Use anime (not show) for Japanese animation. |
| add_item | Add a new item to the library. For best results, use lookup_item first to get the external_id. IMPORTANT: Use anime (not show) for ALL Japanese animation including series, movies, OVAs. |
| delete_item | Delete an item from the library. |
| re_enrich | Re-fetch metadata from external sources for an item whose data is incomplete. This re-runs the SAME external lookup, so it will return the same result as before: it does NOT fix a wrong match. If the item is the wrong film/show/album entirely, use edit_item with new_external_id to relink it, which is the only thing that changes which entry is fetched. |
| search_youtube | Search YouTube for relevant videos (interviews, trailers, analysis, music videos). |
| get_track_previews | Get playable 30-second audio previews for tracks from an album IN THE USER'S LIBRARY. |
| preview_album | Preview any album from Apple Music WITHOUT adding to library. Use this to sample before committing to add. Returns playable 30-second previews. |
| search_book_content | Semantic search within an uploaded book (EPUB/PDF). Uses AI embeddings to find relevant passages. |
| search_library | Semantic search across the user's entire library by meaning, theme, or vibe. Searches every book/movie/album/show/anime/podcast/game as one corpus. Use for cross-media or thematic questions like "things about grief" or "noir mood", or any generic/conceptual query where the exact wording may not appear in the item's title/creator/genre text. For specific title/creator lookups, use the keyword `search` tool instead. |
| read_book_section | Read a specific section of an uploaded book by line numbers. |
| bulk_update_status | Update status for multiple items at once. |
| bulk_add_items | Add up to 250 items to the library in ONE call. Use this whenever the user provides a list of more than 3 items to add — never loop add_item. IMPORTANT: always pass `year`, and pass `external_id` whenever you know it. Without them each title is resolved by fuzzy text search, which silently picks the wrong version for any ambiguous title (Roma 1972 vs Roma 2018, remakes, reissues). A wrong match is expensive to undo, so resolve ids up front via lookup_item for anything ambiguous rather than adding bare titles. Returns honest counts: {added, skipped_duplicates, failed} plus a per-item result list. Always report the exact counts to the user; never claim success without reading them. |
| random_pick | Pick random item(s) for serendipitous discovery. |
| expand_research_scope | Add an item to the current research corpus (focused research mode only). |
| get_scope_info | Get information about the current research scope. |
| get_context | Get user context for adaptive conversation. Returns lifecycle stage and behavioral signals. |
| get_signals | Get behavioral signals: theme repetition, consumption gaps, and recent activity. |
| search_conversations | Search past conversations with this user. Supports semantic search - finds conceptually related conversations, not just keyword matches. |
| save_insight | Save a lasting insight about the user to their persistent profile. Use when you discover meaningful patterns, preferences, personal connections to media, or cross-media themes. |
| get_user_profile | Get the persistent profile built from past conversations. Shows taste patterns, key facts, cross-media connections, and preferences. |
| get_taste_portrait | Get the user's full Taste Portrait: their generated archetype, essence, core tension, preoccupations, the recommendation they don't own yet, and their blind spot. A compact version is already in your context; call this to go deeper when they ask about their portrait. Unlocks at 10 items; below that it returns how many more they need. |
| show_item | ALWAYS use this tool when users say "show me", "open", "go to", "take me to", or "pull up" an item. This navigates them to the item's detail page. Works on ALL clients (web app, iOS app, Claude Desktop) - triggers navigation or returns clickable URL. Do NOT just describe the item when they want to SEE it. |