---
name: teicher-zerahovitch-archive
description: Search ארכיון טייכר וזרחוביץ׳ (~12,000 Hebrew items, 1990s to today) through its public MCP server. Use for any question about Teicher and Zarchovitch, טייכר וזרחוביץ׳, ציפורי לילה מנקרות, חותרים למגע, תוכנית הערב, or a specific Hebrew radio sketch, character, or broadcast date - including "find the episode where they talked about X".
---

# ארכיון טייכר וזרחוביץ׳

A public, unauthenticated MCP server over a fan archive of Israeli radio comedy:
about 12,000 items from nine sources, spanning the 1990s to today. Everything is
read-only.

Endpoint: `https://hakatalog.com/api/mcp`

```
claude mcp add --transport http teicher-zerahovitch-archive https://hakatalog.com/api/mcp
```

## The one thing that decides whether you find anything

**There are no transcripts.** Only titles, short descriptions (~200 characters
on average) and AI summaries are searchable, and roughly a third of items have
no summary at all. Matching is substring-based and requires *every* query term
to appear somewhere in that text.

So a question phrased naturally will usually score zero even when the archive
holds the episode. Your job is to translate the question into the two or three
words most likely to have been *written down about* the episode — not the words
the user said, and not the words spoken on air.

| User asks | Don't search | Search |
|---|---|---|
| "the bit about the Coldplay kiss cam" | `קיס קאם בקונצרט של קולדפליי` | `קולדפליי` |
| "when Felix talked about his divorce" | `פליקס וילנסקי מדבר על גירושין` | `פליקס גירושין`, then `פליקס` with a date range |
| "the sketch with the angry pensioner" | `סקיצה על פנסיונר כועס` | ground the character first with `list_entities` |

## Workflow

1. **Ground exact values first.** `character`, `actor` and `tag` are exact-match
   filters. A near-miss spelling returns zero results with no hint that spelling
   was the problem. Call `list_entities` with `kind: "characters"` and a partial
   `query` before filtering by a name.
2. **Scope vague time references.** "About a year ago" is not a filter. Use
   `get_archive_overview` to see what the archive holds per year, then pass
   `from` and `to`. Coverage is very uneven — some years hold thousands of items
   and others a few hundred.
3. **Search with 2–3 distinctive keywords.** Strip question words, grammar and
   filler.
4. **Read `matching` on the result.** This is the field that tells you how much
   to trust what you got back:
   - `exact` — every term matched. Strong.
   - `relaxed` / `merged` — the full query found nothing and the search was
     widened. Weak. Say so; do not present these as a confident answer.
   - `exhausted` — the query was widened as far as it goes and still found
     nothing. The archive genuinely has no written trace of these words.
   - `filters-only` — no text query ran, just filters.
5. **Reformulate before giving up.** Two or three phrasings is reasonable. A
   different transliteration, a related character, a wider date range.

## Hebrew specifics

Query text is normalised before matching: Hebrew final letters are folded
(`ם`→`מ`, `ך`→`כ`, `ן`→`נ`, `ף`→`פ`, `ץ`→`צ`), geresh and quote marks are
stripped, and hyphens split terms. You do not need to normalise yourself — but it
explains why `קיס-קאם` is two terms, not one.

**Foreign names are usually transliterated.** Search `קולדפליי` before
`coldplay`; both exist in the archive but the Hebrew spelling is far more common.
When a name could be spelled several ways, try the most common one first rather
than guessing at a single form.

## Reporting

Give the title and date for each hit and one line on why it matches. Every result
carries a `listenUrl` that plays the item in the app — offer it.

Never name an episode, character, performer or date that did not come back from
a tool call. The user cannot distinguish a real result from a plausible
invention, which makes guessing worse than saying you could not find it. If the
archive genuinely has nothing, say that and suggest what might help.

## Tools

| Tool | Use it for |
|---|---|
| `search_archive` | The main entry point. Free text plus `from`/`to`, `year`, `character`, `actor`, `tag`, `source`, `type`, `availability`, duration bounds, `sort`, paging. |
| `list_entities` | Real values for the exact-match filters: `characters` (over a thousand), `people`, `tags`, `contentKinds`, `segmentIds`. |
| `get_archive_overview` | Items per era and per calendar year, plus each segment's first and last appearance. |
| `get_episode` | One item in full, with its parent broadcast and sibling parts. |
| `get_archive_stats` | Archive-wide totals and most-covered characters. |

For worked examples, the era vocabulary, and the failure modes worth
recognising, read [references/query-guide.md](references/query-guide.md).
