> For the complete documentation index, see [llms.txt](https://wiki.crosswatch.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.crosswatch.app/crosswatch/settings/synchronization/media-servers/tofa.md).

# Tofa

Sync Tofa watchlists, watched history, resume positions and library collections.

{% hint style="info" %}
Connect Tofa first. See [Tofa connection setup](/crosswatch/settings/connections/media-servers/tofa.md).
{% endhint %}

{% hint style="warning" %}
Tofa support is **experimental**. Start with one feature and review a **Dry run** before enabling writes.
{% endhint %}

### What CrossWatch can sync

| Feature    | Read | Write | Notes                                                                         |
| ---------- | ---- | ----- | ----------------------------------------------------------------------------- |
| Watchlist  | Yes  | Yes   | Movies and shows, including titles outside your library.                      |
| History    | Yes  | Yes   | Library movies and episodes; no separate rewatch events.                      |
| Ratings    | No   | No    | Unsupported.                                                                  |
| Progress   | Yes  | Yes   | Library movies and episodes; positions must be at least one minute.           |
| Playlists  | No   | No    | Unsupported.                                                                  |
| Collection | Yes  | No    | Read-only library inventory: movies, shows and episodes. Optional media info. |

**Read** brings data into CrossWatch; **Write** sends changes to this provider. Enable only features supported by both sides. Collection pairs are one-way only.

Data belongs to the selected household profile or the identities linked in the pair.

Connect the provider first: [Tofa setup](/crosswatch/settings/connections/media-servers/tofa.md).

### How matching works

CrossWatch matches library items using TMDb, IMDb and TVDB IDs. Episodes use show IDs with season and episode numbers. Watchlist writes require a TMDb ID; CrossWatch can use a matching library item to find it.

Titles without matching IDs remain unresolved. Tofa does not support fuzzy title or file-path matching.

### Watchlist behavior

* Read, add and remove movies and shows for the selected profile.
* Titles do not need to be in your Tofa library.
* CrossWatch sends the original added date when one is available.
* Seasons and individual episodes are unsupported.

### History behavior

* Read watched movies and episodes, with available watch dates.
* Adding history marks the default edition watched and sends the supplied watch date when available.
* An item counts as watched when all parts of any one edition are completed.
* Tofa stores watched state, not separate rewatch events.

{% hint style="warning" %}
Removing history marks all files of the matching item unwatched, across its editions. Keep **Remove** off unless you want source removals to clear watched state in Tofa.
{% endhint %}

### Progress behavior

* Read resume positions from unfinished movies and episodes.
* Write positions of at least **one minute** to the first file of the default edition.
* Skip progress writes if the item has a completed edition or a watched part in its default edition. This avoids turning watched content back into unfinished content.
* Clear progress from unwatched files when removals are enabled, while protecting watched files. Completed items are skipped.

For multi-part editions, a resume write does not distribute the position across every part. Check the selected edition when the resume point differs between copies.

In the **Playback** manager, updating a percentage needs a known runtime. Update and remove actions are unavailable for items currently playing in Tofa.

See [Progress](/crosswatch/settings/configure-pairs/features/progress.md).

### Collection behavior

* Read the inventory of selected Tofa libraries, including movies, shows and episodes. Season entries are unsupported.
* Use Tofa as the **source** of a one-way Collection pair. CrossWatch cannot write a collection to Tofa.
* Enable **Media info** in the pair's Collection settings to include available resolution, HDR and audio details.
* Collection means library inventory, not named playlists or collections in Tofa.

### Household profiles

A standard pair uses the household profile chosen on the connection's **Authentication** tab. Select additional people on **Identities**, then enable **Identities** under the pair's **Media servers** tab and save their links. Each person keeps their own history and progress.

If a PIN-protected profile needs unlocking again, enter its PIN on the connection and save. See [Multiple media server users](/crosswatch/settings/connections/media-servers/multiple-media-server-users.md).

### Library selection

The connection's **Whitelisting** tab has separate selections for History, Progress and Collections. Review the pair's **Providers** settings for pair-specific library selections.

**Only items in destination library** is available for History and Progress. Watchlist can include titles outside the library and has no Tofa destination-library filter.

### Troubleshooting

| Result                | What to check                                                              |
| --------------------- | -------------------------------------------------------------------------- |
| Not in library        | The item must exist in a selected Tofa library with matching external IDs. |
| Missing watch date    | The source needs a watch date or an explicit watched state.                |
| File no longer exists | Refresh the Tofa library, then retry.                                      |
| Write not confirmed   | Check the item's watched state or resume position in Tofa before retrying. |
| Progress skipped      | Check the one-minute minimum, watched state and selected edition.          |

### Related guides

* [Connect Tofa](/crosswatch/settings/connections/media-servers/tofa.md)
* [Collection](/crosswatch/settings/configure-pairs/features/collection.md)
* [Watcher](/crosswatch/settings/scrobbler/watcher.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://wiki.crosswatch.app/crosswatch/settings/synchronization/media-servers/tofa.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
