Mark as watched
Log movies and episodes as watched, with the date of the watch.
MCP tool trakt_write → add_to_history
write
Adds plays to your history. A show with no seasons logs every episode, so name seasons and episodes when you mean a few. A watched_at in the past is accepted. Trakt does not check for duplicate plays, so use get_history first. It reaches no one and remove_from_history undoes it, so it needs no confirmation.
Parameters
| Name | Type | Description |
|---|---|---|
| items array required | array | Titles to change. Each item is an object: type ('movie', 'show', 'season' or 'episode'), title and year, or trakt_id from search_titles. Seasons and episodes also take season and episode numbers. add_to_history also takes watched_at, rate_titles takes rating. |
tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "trakt_write",
"arguments": {
"operation": "add_to_history",
"arguments": {
"items": [
{
"type": "episode",
"title": "Slow Horses",
"year": 2022,
"season": 4,
"episode": 1,
"watched_at": "2026-10-10T20:00:00Z"
},
{
"type": "episode",
"title": "Slow Horses",
"year": 2022,
"season": 4,
"episode": 2,
"watched_at": "2026-10-10T20:50:00Z"
},
{
"type": "episode",
"title": "Slow Horses",
"year": 2022,
"season": 4,
"episode": 3,
"watched_at": "2026-10-10T21:40:00Z"
}
]
}
}
}
} Example response
{
"content": [
{
"type": "text",
"text": "{ ... same JSON as structuredContent ... }"
}
],
"structuredContent": {
"added": {
"movies": 0,
"episodes": 3
},
"skipped_duplicates": 0,
"not_found": []
},
"isError": false
}